2014-02-15 2 views
1

Я извлекаю данные в gridview из таблицы. В моем gridview есть 3 текстовых поля и один выпадающий элемент управления. Я хочу получать данные по одной строке из базы данных. После извлечения каждой строки я хочу увеличить строку вида сетки и снова возьмите его.Как увеличить строку сетки?

Вот мой код

SqlCommand sqlCommand2 = new SqlCommand("proc_bcdet", sqlConnection); 
sqlCommand2.CommandType = CommandType.StoredProcedure; 
sqlConnection.Open(); 
sqlCommand2.Parameters.Add("@btcode", SqlDbType.Int).Value = Session["btcode"]; 
SqlDataAdapter adp = new SqlDataAdapter(); 
adp.SelectCommand = sqlCommand2; 
DataSet ds = new DataSet(); 
adp.Fill(ds); 
DataTable dt = ds.Tables[0]; 

int rowIndex = 0; 
if (dt.Rows.Count > 0) 
{ 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 

     TextBox box1 = (TextBox)gvCashReceipt.Rows[i].Cells[1].FindControl("txtlgroup"); 
     TextBox box2 = (TextBox)gvCashReceipt.Rows[i].Cells[2].FindControl("txtamt"); 
     TextBox box3 = (TextBox)gvCashReceipt.Rows[i].Cells[3].FindControl("txtnarr"); 
     Label lb1 = (Label)gvCashReceipt.Rows[i].Cells[4].FindControl("lbllcode"); 
     DropDownList ddl1 = (DropDownList)gvCashReceipt.Rows[rowIndex].Cells[0].FindControl("drprledger"); 


     //Fill the DropDownList with Data 
     ddl1.DataSource = module.Query("Select Name from AccMast where LGcode in (2,3,4) order by Lcode"); 
     ddl1.DataBind(); 


     if (i < dt.Rows.Count) 
     { 

      //Assign the value from DataTable to the TextBox 
      box1.Text = dt.Rows[i]["Lgname"].ToString(); 
      box2.Text = dt.Rows[i]["Amt"].ToString(); 
      box3.Text = dt.Rows[i]["Narr"].ToString(); 
      lb1.Text = dt.Rows[i]["Lcode"].ToString(); 
      //Set the Previous Selected Items on Each DropDownList on Postbacks 
      ddl1.ClearSelection(); 
      ddl1.Items.FindByText(dt.Rows[i]["Name"].ToString()).Selected = true; 
     } 

     rowIndex++; 
    } 
} 

после загрузки первой строки я получил «индекс вне диапазона» сообщение об ошибке, пожалуйста, помогите мне ...

+1

«Я хочу получать данные по одной строке из базы данных» Это обычно не очень хорошая идея. Выполните все необходимые вам данные для одного вызова. В противном случае вы можете вызвать сотни запросов на загрузку каждой страницы ... и если сотни людей попадут на ту же страницу, результат будет менее оптимальным. – MikeSmithDev

ответ

0

Я не знаю, почему вы хотите для цикла, когда вы можете напрямую привязать данные к gridview. Однако, если ваше требование состоит в том, чтобы получить столбец increment, лучший способ сделать это - создать новую таблицу данных с помощью столбца increment, а затем объединить ее с вашей таблицей данных результата.

Эта ссылка покажет, как это сделать. http://tinyurl.com/kv5v2zy

На боковой ноте попробуйте использовать Data Grid, который очень универсален.

Надеюсь, это поможет.

Смежные вопросы