2013-12-04 3 views
0

Я использую элемент управления сеткой в ​​своем веб-приложении. Мой вид сетки выглядит следующим образом.как добавить больше контроля в каждую ячейку редактируемого gridview с помощью asp.net

enter image description here

При нажатии на кнопку Add я получаю результат, как это .. enter image description here

Но мой ожидаемый результат это один .. где моя ошибка? что мне делать? enter image description here

Это мое кодирование ..

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    {    
     DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("S.No", typeof(string))); 
     dt.Columns.Add(new DataColumn("Article No", typeof(string))); 
     dt.Columns.Add(new DataColumn("Item Description", typeof(string))); 
     dt.Columns.Add(new DataColumn("Order Quantity", typeof(string))); 
     dt.Columns.Add(new DataColumn("UOM", typeof(string))); 
     dt.Columns.Add(new DataColumn("Rate", typeof(string))); 
     dt.Columns.Add(new DataColumn("Currency", typeof(string))); 
     dt.Columns.Add(new DataColumn("Amount", typeof(string))); 
     DataRow dr = dt.NewRow(); 
     dr["S.No"] = 1; 
     dr["Article No"] = string.Empty; 
     dr["Item Description"] = string.Empty; 
     dr["Order Quantity"] = 0; 
     dr["UOM"] = string.Empty; 
     dr["Rate"] = 0; 
     dr["Currency"] = string.Empty; 
     dr["Amount"] = 0; 
     dt.Rows.Add(dr); 
     ViewState["currenttable"] = dt; 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 


     DropDownList box2 = (DropDownList)GridView1.Rows[0].Cells[1].FindControl("DropDownList1"); 
     box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo(); 
     box2.DataTextField = "Port_Number"; 
     box2.DataValueField = "Description"; 
     box2.DataBind(); 
     box2.Items.Insert(0, " "); 

    DropDownList box12 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList3"); 
     box12.DataSource = SIMBL.ShowUnitItemInfo(); 
     box12.DataTextField = "Name"; 
     box12.DataValueField = "Symbol"; 
     box12.DataBind(); 
     box12.Items.Insert(0, " "); 

     DropDownList box13 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList4"); 
     box13.DataSource = SIMBL.ShowUnitItemInfo(); 
     box13.DataTextField = "Name"; 
     box13.DataValueField = "Symbol"; 
     box13.DataBind(); 
     box13.Items.Insert(0, " "); 

     DropDownList box14 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList5"); 
     box14.DataSource = SIMBL.ShowUnitItemInfo(); 
     box14.DataTextField = "Name"; 
     box14.DataValueField = "Symbol"; 
     box14.DataBind(); 
     box14.Items.Insert(0, " "); 
     } 

} 
public void addnewrow() 
{ 
    int rowIndex = 0; 

    if (ViewState["currenttable"] != null) 
    { 
     DataTable dtCurrentTable = (DataTable)ViewState["currenttable"]; 
     DataRow drCurrentRow = null; 



     for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
     { 
      TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6"); 
      DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1"); 
      TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8"); 
      TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9"); 
      TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10"); 
      TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11"); 
      Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6"); 
      TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13"); 
      TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14"); 
      TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15"); 
      Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7"); 
      DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3"); 
      DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4"); 
      DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5"); 
      Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8"); 
      TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17"); 
      TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18"); 
      TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19"); 
      Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9"); 
      DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7"); 
      DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8"); 
      DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9"); 
      Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0"); 
      TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21"); 
      TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22"); 
      TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23"); 

      drCurrentRow = dtCurrentTable.NewRow(); 
      drCurrentRow["S.No"] = i + 1; 



      dtCurrentTable.Rows[i - 1]["Article No"] = box2.Text; 
      dtCurrentTable.Rows[i - 1]["Item Description"] = box3.Text; 
      dtCurrentTable.Rows[i - 1]["Item Description"] = box4.Text; 
      dtCurrentTable.Rows[i - 1]["Item Description"] = box5.Text; 
      dtCurrentTable.Rows[i - 1]["Item Description"] = box6.Text; 
      dtCurrentTable.Rows[i - 1]["Order Quantity"] = box8.Text; 
      dtCurrentTable.Rows[i - 1]["Order Quantity"] = box9.Text; 
      dtCurrentTable.Rows[i - 1]["Order Quantity"] = box10.Text; 
      dtCurrentTable.Rows[i - 1]["UOM"] = box12.Text; 
      dtCurrentTable.Rows[i - 1]["UOM"] = box13.Text; 
      dtCurrentTable.Rows[i - 1]["UOM"] = box14.Text; 
      dtCurrentTable.Rows[i - 1]["Rate"] = box16.Text; 
      dtCurrentTable.Rows[i - 1]["Rate"] = box17.Text; 
      dtCurrentTable.Rows[i - 1]["Rate"] = box18.Text; 
      dtCurrentTable.Rows[i - 1]["Currency"] = box20.Text; 
      dtCurrentTable.Rows[i - 1]["Currency"] = box21.Text; 
      dtCurrentTable.Rows[i - 1]["Currency"] = box22.Text; 
      dtCurrentTable.Rows[i - 1]["Amount"] = box24.Text; 
      dtCurrentTable.Rows[i - 1]["Amount"] = box25.Text; 
      dtCurrentTable.Rows[i - 1]["Amount"] = box26.Text; 

      rowIndex++; 
     } 
     dtCurrentTable.Rows.Add(drCurrentRow); 
     ViewState["currenttable"] = dtCurrentTable; 

     GridView1.DataSource = dtCurrentTable; 
     GridView1.DataBind(); 


     for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
     { 
      DropDownList box2 = (DropDownList)GridView1.Rows[0].Cells[1].FindControl("DropDownList1"); 
      box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo(); 
      box2.DataTextField = "Port_Number"; 
      box2.DataValueField = "Description"; 
      box2.DataBind(); 
      box2.Items.Insert(0, " "); 


     } 



    } 
    SetPreviousData(); 
} 
private void SetPreviousData() 
{ 
    int rowIndex = 0; 
    if (ViewState["currenttable"] != null) 
    { 
     DataTable dt = (DataTable)ViewState["currenttable"]; 
     if (dt.Rows.Count > 0) 
     { 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6"); 
       DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1"); 
       TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8"); 
       TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9"); 
       TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10"); 
       TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11"); 
       Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6"); 
       TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13"); 
       TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14"); 
       TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15"); 
       Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7"); 
       DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3"); 
       DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4"); 
       DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5"); 
       Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8"); 
       TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17"); 
       TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18"); 
       TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19"); 
       Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9"); 
       DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7"); 
       DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8"); 
       DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9"); 
       Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0"); 
       TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21"); 
       TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22"); 
       TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23"); 


       box1.Text = dt.Rows[i]["S.No"].ToString(); 
       box2.Text = dt.Rows[i]["Article No"].ToString(); 
       box3.Text = dt.Rows[i]["Item Description"].ToString(); 
       box8.Text = dt.Rows[i]["Order Quantity"].ToString(); 
       box12.Text = dt.Rows[i]["UOM"].ToString(); 
       box16.Text = dt.Rows[i]["Rate"].ToString(); 
       box20.Text = dt.Rows[i]["Currency"].ToString(); 
       box24.Text = dt.Rows[i]["Amount"].ToString(); 

       rowIndex++; 

      } 
     } 
    } 
} 


protected void Button1_Click1(object sender, EventArgs e) 
{ 
    addnewrow(); 

} 
+1

, как любой человек может сказать не глядя на свой код? –

+0

укажите коды .. у нас нет способа узнать, что вы делаете за добавлением события –

+1

@Mathi, вы имеете в виду, что введенные значения исчезают при нажатии кнопки «Добавить» ... Правильно? и это ваша проблема ... правильно? –

ответ

2

Пожалуйста, ниже изменения ....

1) В addnewrow) изменения функции (ниже строки кода:

dtCurrentTable.Rows[i - 1]["Item Description"] = box3.Text; 
dtCurrentTable.Rows[i - 1]["Item Description"] = box4.Text; 
dtCurrentTable.Rows[i - 1]["Item Description"] = box5.Text; 
dtCurrentTable.Rows[i - 1]["Item Description"] = box6.Text; 

изменить код ниже:

dtCurrentTable.Rows[i - 1]["Item Description"] = box3.Text + "," + box4.Text + "," + box5.Text + "," + box6.Text; 

И та же логика применяются к стоимости магазина для заказа количества, единиц измерения, ставка, валюта и сумма полей/управления

2) В SetPreviousData() изменение функции ниже строки кода:

box3.Text = dt.Rows[i]["Item Description"].ToString(); 

изменения о коде, как показано ниже:

if(Convert.ToString(dt.Rows[i]["Item Description"]).Trim() != "") 
{ 
string[] strDesc = Convert.ToString(dt.Rows[i]["Item Description"]).Trim().Split(','); 
box3.Text = strDesc[0].ToString(); 
box4.Text = strDesc[1].ToString(); 
box5.Text = strDesc[2].ToString(); 
box6.Text = strDesc[3].ToString(); 
} 

И той же логике применяется к стоимости магазина для заказа Количество, U О.М., ставка, валюта и сумма полей/управляет

+0

да .. Perfect ответ для мой вопрос. – Mathi

+0

@Mathi Спасибо, Mathi .. :) –

+0

ваш ответ был совершенным @VishalPatel .. У меня есть еще одна проблема ... когда я нажимаю кнопку «Добавить», следующая строка отображалась хорошо, но выпадающий список (Article No & UOM) был не загружая данные из базы данных. Дайте свое решение. – Mathi

0

В addnewrow() функция заменить ниже код:

for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
     { 
      DropDownList box2 = (DropDownList)GridView1.Rows[0].Cells[1].FindControl("DropDownList1"); 
      box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo(); 
      box2.DataTextField = "Port_Number"; 
      box2.DataValueField = "Description"; 
      box2.DataBind(); 
      box2.Items.Insert(0, " "); 


     } 

Заменить выше код с ниже строки кода ...

for (int i = 0; i <= dtCurrentTable.Rows.Count; i++) 
     { 
      DropDownList box2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("DropDownList1"); 
      box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo(); 
      box2.DataTextField = "Port_Number"; 
      box2.DataValueField = "Description"; 
      box2.DataBind(); 
      box2.Items.Insert(0, " "); 

    DropDownList box12 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList3"); 
     box12.DataSource = SIMBL.ShowUnitItemInfo(); 
     box12.DataTextField = "Name"; 
     box12.DataValueField = "Symbol"; 
     box12.DataBind(); 
     box12.Items.Insert(0, " "); 

     DropDownList box13 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList4"); 
     box13.DataSource = SIMBL.ShowUnitItemInfo(); 
     box13.DataTextField = "Name"; 
     box13.DataValueField = "Symbol"; 
     box13.DataBind(); 
     box13.Items.Insert(0, " "); 

     DropDownList box14 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList5"); 
     box14.DataSource = SIMBL.ShowUnitItemInfo(); 
     box14.DataTextField = "Name"; 
     box14.DataValueField = "Symbol"; 
     box14.DataBind(); 
     box14.Items.Insert(0, " "); 

} 
+0

@ Mathi Это работа для вас ...? –

+0

Нет @VishalPatel .. Я получаю что-то вроде «Index out of range Exception» .. Как исправить это исключение. – Mathi

+0

@Mathi Я изменил код "for (int i = 1; i <= dtCurrentTable.Rows.Count; i ++)" с "for (int i = 0; i <= dtCurrentTable.Rows.Count; i ++)" So повторите попытку ... –

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