所以我有一个循环遍历GridView的函数,它使用带有分页的JQuery DataTable。它为每个页面显示十行,因此需要编辑所需的所有文本框,然后单击名为“保存”的按钮,该按钮调用前面提到的功能。问题是,只有在单击“保存”按钮时屏幕上显示的页面才会发送文本框值而不是所有gridview texbox。例如,如果我编辑“gridview page 1”,“gridview page 2”和“gridview page 3”字段并单击“Save”按钮,同时显示“gridview page 3”,则“gridview page 1”和“gridview page” 2“文本框值未保存。如果我错误地解释自己,请告诉我。
ASPX内联代码
<asp:GridView ID="grvServicio" runat="server" AutoGenerateColumns="false" class="display" >
<Columns>
<asp:BoundField DataField="intIdServicio" HeaderText="ID" />
<asp:BoundField DataField="vchServicio" HeaderText="Servicio" />
<asp:TemplateField HeaderText="Cantidad">
<ItemTemplate>
<asp:TextBox ID="txtCantidad" runat="server" ClientIDMode="Static" Text='<%# Bind("intCantidad")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Precio">
<ItemTemplate>
<asp:TextBox ID="txtPrecio" runat="server" ClientIDMode="Static" Text='<%# Bind("decPrecio")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Estatus">
<ItemTemplate>
<asp:CheckBox ID="chkServEstatus" Checked='<%# Convert.ToBoolean(Eval("intEstatus"))%>' enabled="true" runat="server" CssClass="ChkBoxClass"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
ASPX背后的代码(我删除了代码保存过程,但如果有必要,请告诉我)
protected void btnGuardarServicio_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in grvServicio.Rows)
{
for (int i = 0; i < grvServicio.Columns.Count; i++)
{
string idEvento = row.Cells[0].Text;
TextBox cant = (TextBox)row.Cells[2].FindControl("txtCantidad");
TextBox prec = (TextBox)row.Cells[3].FindControl("txtPrecio");
prec.Text = prec.Text.Replace(",", ".");
}
}
}
Here is how my GridView looks like using datatable JQuery plug-in
使用分页网格时,只有在更改页面时才会呈现和加载数据(如果它是服务器端分页)。也许您可以将数据保存在值更改事件中,因此当您切换到下一页并再次返回时,您可以更新数据。