2016-04-19 7 views
0

私のグリッドビューでは、対応するボタンを持つ各行にテキストボックスを与え、テキストボックスから値を取り出し、データベースの行の値を更新します。グリッドビューの各行のテキストボックスを1つのボタンで更新する

しかし、ヘッダーテンプレートの上部に1つのボタンを追加して、すべてのテキストボックスの値をフェッチしてその行を更新したいとします。

「[0] INSTANCE_IDセル」

私のコードは以下の通りです私は、次のコードを試してみましたが、私はでnull参照の例外を取得します。

`

   <asp:TemplateField> 
        <HeaderTemplate> 
         <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
        </HeaderTemplate> 
       <ItemTemplate> 
         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:ButtonField Text="Update Attendance" CommandName="Select" /> 

      </Columns> 
     </asp:GridView>` 

とボタンの上のすべてのテキストボックスからデータをフェッチするためにクリックしてください:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     vo.instance_ID = GridView1.SelectedRow.Cells[0].Text; 

     vo.Project_ID = GridView1.SelectedRow.Cells[1].Text; 

     vo.volunteer_ID = GridView1.SelectedRow.Cells[6].Text; 

     vo.Campus_ID = GridView1.SelectedRow.Cells[5].Text; 

     vo.attendance_hours = (GridView1.SelectedRow.FindControl("TextBox1") as TextBox).Text; 

     Convert.ToInt32(vo.attendance_hours); 

     try 
     { 
      int success = BL.fn_UpdateAttendance(vo); 
      if (success == 2) 
      { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Attendance Updated Successfully')", true); 
       // Label2.Text = "Attendance Updated Successfully"; 
      } 
      else 
      { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Attendance Not Updated')", true); 
       // Label2.Text = "Attendance Not Updated"; 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 
    } 
} 

答えて

0

私の友人はrow.Cellsを使うことを提案する[0] ; foreachの中でそれは働いた!

ありがとうございます。

関連する問題