如果我行添加到使用jQuery GridView中,我将能够与获得新添加的行:将行添加到使用jQuery一个GridView和保存
foreach (GridViewRow row in gvMyGridView.Rows)
{
}
我怎么能添加行,因此他们可能在代码后面迭代?
如果我行添加到使用jQuery GridView中,我将能够与获得新添加的行:将行添加到使用jQuery一个GridView和保存
foreach (GridViewRow row in gvMyGridView.Rows)
{
}
我怎么能添加行,因此他们可能在代码后面迭代?
我把我的Gridview控件放在更新面板中,并设置一个异步触发器指向我的添加按钮(这样当添加新行时不会刷新整个页面)。
然后在后面的代码中,我将新行添加到数据表。将数据表保存在viewstate中,并将gridview重新绑定到viewstate。然后,当从gridview中获取数据时,循环查看状态数据表行。
不知道这是否是最好的解决方案,但它迄今为止一直在为我工作。
protected void cmdAdd(){
datatable table=(datatable)viewstate["savedTable"];
datarow row = table.newRow;
row["myColumnName"]=txtSomething.text;
datatable.rows.add(row);
viewstate["savedTable"]=table;
grid.datasource=viewstate["savedTable"];
grid.databind();
// or create your own functions to make the code reusable
}
protected void cmdSave(){
datatable table=viewstate["savedTable"];
foreach(datarow row in table.rows){
//do stuff
}
}
我通常使用的引导模态将新行添加到我的网格,并呼吁从这些代码模式通过网格标题后面的按钮。
所以我的GridView的HTML看起来像这样:
<asp:UpdatePanel runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView runat="server" ID="stockTakeGrid"
CssClass="table table-striped table-bordered table-condensed table-hover"
AllowPaging="true" PageSize="8" OnPageIndexChanging="stockTakeGrid_PageIndexChanging"
ShowHeaderWhenEmpty="true"
OnRowCommand="stockTakeGrid_RowCommand"
OnRowDataBound="stockTakeGrid_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" ID="cmdEdit" CssClass="btn" ToolTip="Edit Stock"
CommandName="editStock" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>">
<span><i class=" glyphicon glyphicon-pencil"></i></span>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ITEMCODE" HeaderText="Item Code" />
<asp:BoundField DataField="ITEMDESC" HeaderText="Item Desc" />
<asp:BoundField DataField="ONHAND" HeaderText="Stock On Hand" />
<asp:BoundField DataField="STCOUNT" HeaderText="Stock Count" />
<asp:BoundField DataField="VARIANCE" HeaderText="Variane" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
<asp:BoundField DataField="VALUE" HeaderText="Value" DataFormatString="{0:0,0.00}" />
<asp:BoundField DataField="COMMENT" HeaderText="Comment" />
</Columns>
<PagerStyle CssClass="pagination-ys" />
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="cmbLocation" EventName="selectedindexchanged" />
<asp:AsyncPostBackTrigger ControlID="cmdSaveLine" EventName="click" />
</Triggers>
</asp:UpdatePanel>
然后我的HTML模式是这样的:
<!--Item Modal-->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Set actual stock count</h4>
</div>
<div class="modal-body">
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<div class="form-group">
<asp:Label runat="server" CssClass="control-label col-md-2 ">Item Code</asp:Label>
<div class="col-md-2">
<asp:TextBox runat="server" ID="txtItemCode" CssClass="form-control" ReadOnly="true"></asp:TextBox>
</div>
<div class="col-md-6">
<asp:TextBox runat="server" ID="txtItemDesc" CssClass="form-control" ReadOnly="true"></asp:TextBox>
</div>
</div>
<div class="form-group">
<asp:Label runat="server" CssClass="control-label col-md-2">Stock on Hand</asp:Label>
<div class="col-md-2">
<asp:TextBox runat="server" ID="txtOnHand" CssClass="form-control" ReadOnly="true"></asp:TextBox>
</div>
</div>
<div class="form-group">
<asp:Label runat="server" CssClass="control-label col-md-2">Stock Count</asp:Label>
<div class="col-md-2">
<asp:TextBox runat="server" ID="txtSTCount" CssClass="form-control decimal-empty"></asp:TextBox>
</div>
</div>
<div class="form-group">
<asp:Label runat="server" CssClass="control-label col-md-2">Comment</asp:Label>
<div class="col-md-10">
<asp:TextBox runat="server" CssClass="form-control" TextMode="MultiLine" ID="txtComment" ></asp:TextBox>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="stockTakeGrid" EventName="rowcommand" />
</Triggers>
</asp:UpdatePanel>
</div>
<div class="modal-footer">
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:Button runat="server" ID="cmdSaveLine" CssClass="btn btn-info pull-left" Text="Save"
OnClientClick="$('#myModal').modal('hide');" OnClick="cmdSaveLine_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
希望这有助于!
请问您可以添加gridview和更新面板代码将在aspx页面中出现? –
http://www.aspsnippets.com/Articles/Dynamically-Add-Rows-to-GridView-using-JavaScript-on-Button-Click-in-ASPNet.aspx – Damith