2016-05-26 2 views
0
<body> 
<form id="form1" runat="server"> 
<div> 
    <div> 
     <br /><br /><br /> 
     <asp:GridView runat="server" ID="gv"  AutoGenerateColumns="false" class="table table-striped table-advance table-hover" BorderWidth="2px"> 
      <Columns> 
       <asp:BoundField DataField="#" HeaderText="#" HeaderStyle-Height="50px" HeaderStyle-Font-Bold="true" HeaderStyle-Width="50px" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="Student_id" HeaderText="Student_id" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 

        <asp:BoundField DataField="RegNo" HeaderText="RegNo" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="Student Name" HeaderText="Student Name" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="PhoneNO" HeaderText="PhoneNO" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="EmailId" HeaderText="EmailId" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="DOB" HeaderText="DOB" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:BoundField DataField="DOJ" HeaderText="DOJ" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-BackColor="#66ccff" /> 
       <asp:TemplateField HeaderText="Marks Obt" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-Width="160px" HeaderStyle-BackColor="#66ccff" > 
        <ItemTemplate> 
         <asp:TextBox ID="tb1" runat="server" class="form-control-smalltxtBox"></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Max Marks" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-Width="160px" HeaderStyle-BackColor="#66ccff"> 
        <ItemTemplate> 
         <asp:TextBox ID="tb2" runat="server" class="form-control-smalltxtBox"></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
     <br /><br />   
     <br /><br /><br /> 
    </div> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
</div> 

</form> 

Как сохранить данные из динамически созданного текстового поля базы данных

я создал одно текстовое поле в

<asp:TemplateField HeaderText="Marks Obt" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Medium" HeaderStyle-Width="160px" HeaderStyle-BackColor="#66ccff" > 
    <ItemTemplate> 
     <asp:TextBox ID="tb1" runat="server" class="form-control-smalltxtBox"></asp:TextBox> 
    </ItemTemplate> 
</asp:TemplateField> 

И .cs класс

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(! IsPostBack) 
    { 

    } 
    DataTable dt = Teacher_DataLayer.getStudent(3); 
    gvPop(dt); 
} 

public void gvPop(DataTable eList) 
{ 
    try 
    { 
     DataTable dtt = new DataTable(); 
     DataRow drw = null; 
     int i = 0; 
     string id1 = "t1r"; 
     string id2 = "t2r"; 
     string sN = string.Empty; 
     string sId = string.Empty; 
     string sub = string.Empty; 
     string mG = string.Empty; 
     string mT = string.Empty; 
     string ed = string.Empty; 
     string et = string.Empty; 
     string eaid = string.Empty; 
     string regno = string.Empty; 
     string phoneno = string.Empty; 
     string emai = string.Empty; 
     string dt1=string.Empty; 
     string dt2=string.Empty; 
     dtt.Columns.Add(new DataColumn("#", typeof(string))); 
     dtt.Columns.Add(new DataColumn("Student_id", typeof(int))); 
     dtt.Columns.Add(new DataColumn("RegNo", typeof(string))); 
     dtt.Columns.Add(new DataColumn("Student Name", typeof(string))); 
     dtt.Columns.Add(new DataColumn("PhoneNO", typeof(string))); 
     dtt.Columns.Add(new DataColumn("EmailId", typeof(string))); 
     dtt.Columns.Add(new DataColumn("DOB", typeof(string))); 
     dtt.Columns.Add(new DataColumn("DOJ", typeof(string))); 
     dtt.Columns.Add(new DataColumn("Marks Obt", typeof(string))); 
     dtt.Columns.Add(new DataColumn("Max Marks", typeof(string))); 
     foreach (DataRow dr in eList.Rows) 
     { 
      int cc = 1; 

      foreach (object dc in dr.ItemArray) 
      { 
       String cd = null; 
       if (dc == null) 
       { 
        cd = "null"; 
       } 
       else 
       { 
        cd = dc.ToString(); 
       } 

       if (cc == 1) 
       { 
        sId = cd; 
       } 
       else if (cc == 2) 
       { 
        regno = cd; 
       } 
       else if (cc == 3) 
       { 
        sN = cd; 
       } 
       else if (cc == 4) 
       { 
        phoneno = cd; 
       } 
       else if (cc == 5) 
       { 
        emai = cd; 
       } 
       else if (cc == 6) 
       { 
        dt1 = cd; 
       } 
       else if (cc == 7) 
       { 
        dt2 = cd; 
       } 
       else if (cc == 8) 
       { 
        mG = cd; 
       } 

       cc = cc + 1; 

      } 

      i = i + 1; 
      drw = dtt.NewRow(); 
     drw["#"] = i; 
      drw["Student_id"] = Convert.ToInt32(sId); 
      drw["RegNo"] = regno; 
      drw["Student Name"] = sN; 
      drw["PhoneNO"] = phoneno; 
      drw["EmailId"] = emai; 
      drw["DOB"] = dt1; 
      drw["DOJ"] = dt2; 

      drw["Marks Obt"] = mG; 
      //drw["Max Marks"] = maxM; 
      dtt.Rows.Add(drw); 
     // dtt.Columns.Clear(); 
     } 

     ViewState["CurrentTable"] = dtt; 
     gv.DataSource = dtt; 
     gv.DataBind(); 
     SetPreviousData(); 

    } 
    catch (Exception ex) { } 
} 

public void SetPreviousData() 
{ 
    try 
    { 
     int rowIndex = 0; 
     if (ViewState["CurrentTable"] != null) 
     { 
      DataTable dt1 = (DataTable)ViewState["CurrentTable"]; 
      if (dt1.Rows.Count > 0) 
      { 

       for (int i = 0; i < dt1.Rows.Count; i++) 
       { 
        TextBox box1 = (TextBox)gv.Rows[rowIndex].Cells[8].FindControl("tb1"); 
        TextBox box2 = (TextBox)gv.Rows[rowIndex].Cells[9].FindControl("tb2"); 

        box1.Text = dt1.Rows[i]["Marks Obt"].ToString(); 
        //box2.Text = maxM; 

        rowIndex++; 
       } 
      } 
     } 
    } 
    catch (Exception ep) { } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     DataTable dtN = new DataTable(); 
     DataRow drw = null; 
     int rowIndex = 0; 
     //dtN.Columns.Add(new DataColumn("#", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("Student_id", typeof(int))); 
     //dtN.Columns.Add(new DataColumn("RegNo", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("Student Name", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("PhoneNO", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("EmailId", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("DOB", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("DOJ", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("Marks Obt", typeof(string))); 
     //dtN.Columns.Add(new DataColumn("Max Marks", typeof(string))); 
     if (ViewState["CurrentTable"] != null) 
     { 
      DataTable dtV = (DataTable)ViewState["CurrentTable"]; 
      int ww= dtV.Rows.Count; 
      if (dtV.Rows.Count > 0) 
      { 
       for (int i = 0; i < dtV.Rows.Count; i++) 
       { 
        string sid = gv.Rows[rowIndex].Cells[1].Text; 
        int ss = Convert.ToInt32(sid); 
        string nn= gv.Rows[rowIndex].Cells[3].Text; 
        string ttt= gv.Rows[rowIndex].Cells[8].Text; 
       TextBox box1 = (TextBox)gv.Rows[rowIndex].Cells[8].FindControl("tb1"); 
        string mo = box1.Text; 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 

    } 
} 

На кнопку нажать ее не может найти контроль над текстовым полем Мне нужно сохранить данные, введенные в текстовое поле и student_id.

ответ

0

Если текстовое поле создано внутри TemplateField, это не будет вызываться событием клика кнопки, так как этот элемент управления привязан к виду сетки.

Вы должны вызвать данные строки связанного события и получить значение из текстового поля как: -

Шаг 1: - Добавить в сетке onrowdatabound = «gv_RowDataBound»

В этой линии сетки

Шаг 2: - Создание в C# конца

охраняемого недействительного gv_RowCommand (объект отправителя, GridViewCommandEventArgs е) {
если (e.Row.RowType == DataControlRowType.DataRow)
{
// Добавить вам здесь логику }
}

Иначе вы можете сделать это с помощью efficienctly JQuery и Ajax вызова.

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