0
我有一个jqgrid(版本4.6.0.0),我在一个数量列的页脚上显示授予总数。如果用户插入新行或删除行,则应重新计算总量,并在页脚上显示它。它工作正常,直到网格为空(没有任何行),我的意思是如果用户删除网格上的最后一行,代码仍然计算正确的金额(0),但页脚仍然显示它的总数量,而不是0。 这里是我的代码:如果行为空,jqgrid footervalue不正确
protected void Jqgrid1_DataRequested(object sender, JQGridDataRequestedEventArgs e)
{
DataSet _ds = (DataSet)Session["myApplicationForm"];
DataTable dt1 = _ds.Tables[1] as DataTable;
CalcVoucherAmt(dt1);
}
private void CalcVoucherAmt(DataTable _dt)
{
decimal amtSum = 0;
foreach (DataRow dr in _dt.Rows)
{
amtSum += obj2decimal(dr["DETAIL_AMT"]);
}
Jqgrid1.Columns.FromDataField("DETAIL_AMT").FooterValue = amtSum.ToString();
}
protected void Jqgrid1_RowAdding(object sender, Trirand.Web.UI.WebControls.JQGridRowAddEventArgs e)
{
DataSet _ds = (DataSet)Session["myApplicationForm"];
DataTable dt1 = _ds.Tables[1] as DataTable;
dt1.PrimaryKey = new DataColumn[] { dt1.Columns["DATA_SEQ"] };
DataRow row = dt1.NewRow();
row["UNIQ_KEY"] = System.Guid.NewGuid().ToString();
row["DETAIL_AMT"] = amt; //user input
dt1.Rows.InsertAt(row, dt1.Rows.Count);
Session["myApplicationForm"] = _ds;
Jqgrid1.DataSource = dt1;
Jqgrid1.DataBind();
}
protected void Jqgrid1_RowEditing(object sender, Trirand.Web.UI.WebControls.JQGridRowEditEventArgs e)
{
DataSet _ds = (DataSet)Session["myApplicationForm"];
DataTable dt1=_ds.Tables[1] as DataTable;
dt1.PrimaryKey = new DataColumn[] { dt1.Columns["DATA_SEQ"] };
DataRow rowEdited = dt1.Rows.Find(e.RowKey);
rowEdited["DETAIL_AMT"] = amt; //user input
Session["myApplicationForm"] = _ds;
Jqgrid1.DataSource = dt1;
Jqgrid1.DataBind();
}
protected void Jqgrid1_RowDeleting(object sender, JQGridRowDeleteEventArgs e)
{
DataSet _ds = (DataSet)Session["myApplicationForm"];
DataTable dt1 = _ds.Tables[1] as DataTable;
dt1.PrimaryKey = new DataColumn[] { dt1.Columns["DATA_SEQ"] };
DataRow rowToDelete = dt1.Rows.Find(e.RowKey);
if (rowToDelete != null)
dt1.Rows.Remove(rowToDelete);
}
和ASPX,代码
<cc1:JQGrid ID="Jqgrid1" runat="server" Height="100%" Width="100%" AutoWidth="true" PagerSettings-PageSizeOptions="[]"
OnRowAdding="Jqgrid1_RowAdding"
OnRowEditing="Jqgrid1_RowEditing"
OnDataRequested="Jqgrid1_DataRequested"
OnRowDeleting="Jqgrid1_RowDeleting">
</cc1:JQGrid>
什么想法?
我发布了原始代码底部的添加/删除代码。你可以注意到我使用了asp.net webform,所以reloadGrid在这里无法使用。希望你能给我一些建议。 – brandon 2014-12-05 14:25:42
@brandon:你使用了你问题的'jqgrid'标签。 jqGrid是**纯JavaScript **解决方案。如果您使用一些ASP.NET WebForm,那么您直接间接生成一些包装。您应该打开HTML页面的源代码并查看您生成的JavaScript代码。如果您想使用相同语言与其他人交谈,则应使用JavaScript术语。 ''var grid = $(“#<%= Jqgrid1.ClientID%>”);''会为你提供网格的jQuery包装(参见[documentation]](http://www.trirand.net/documentation/aspnet/_2s90nukak .htm))和'grid.trigger(“reloadGrid”,[{current:true}]);'会重新加载。 – Oleg 2014-12-05 15:15:04
我正在使用jqGrid for asp.net,它是一个webform控件,一个商业版本。 [www.trirand.net](http://www.trirand.net/demo/aspnet/webforms/jqgrid)。可能是我发布的问题是一个错误? – brandon 2014-12-06 02:12:48