В моем gridview я дал текстовое поле для каждой строки, у которой есть соответствующая кнопка, которая извлекает значение из текстового поля и обновляет значение строк в базе данных.Обновить текстовое поле для каждой строки в gridview на одной кнопке Нажмите
Но я хочу добавить одну кнопку сверху в шаблон заголовка, которая будет извлекать значения всех текстовых полей и обновлять их строки.
Я попытался следующий код, но я получаю пустой ссылкой исключение в «instance_id ячейке [0]»
Мой код находится ниже.
`
<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);
}
}
}