[英]Asp.net client side editing of gridview gets overwritten
我有一個簡單的gridview,其中填充了簡單實體的列表
public class Order
{
public int Id { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public int Quantity { get; set; }
}
在Page_Load方法中,我執行以下操作
if (!IsPostBack)
{
this.magrid.DataSource = list;
magrid.DataBind();
}
我的頁面定義為
<asp:panel runat="server" ID="MyOrders" Visible="true" Width="900px">
<asp:UpdatePanel runat="server" ID="AjaxPanel">
<ContentTemplate>
<asp:GridView runat="server" ID="magrid" AutoGenerateColumns="False" OnRowDataBound="RowDataBound">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id"/>
<asp:BoundField DataField="Code" HeaderText="Code"/>
<asp:BoundField DataField="Description" HeaderText="Description"/>
<asp:BoundField DataField="Quantity" HeaderText="Quantity"/>
<asp:TemplateField
HeaderText="Action"
ItemStyle-CssClass="gviCnt gviCntProductid"
HeaderStyle-CssClass="gviModifyOrder">
<ItemTemplate>
<asp:LinkButton
OnClientClick='<%# "MettreAZero(" + Eval("Id") + ");" %>'
Visible='true'
Text='Clear' runat="server"
ID="btnRemoveLine"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:panel>
</div>
</form>
以及javascript函數{
function MettreAZero(id) {
var table = document.getElementById("magrid");
for (var i = 0, row; row = table.rows[i]; i++) {
var cellid = row.cells[0].innerHTML;
if (cellid == id) {
row.cells[3].innerHTML = "0";
return;
}
}
}
}
</script>
我遇到的問題是,當我單擊按鈕時,所選行的值將更改為零,但隨后會自動將網格重新加載為其原始值。
我想念什么?
謝謝
在您的代碼中,設置一個單擊事件處理程序:
OnClientClick=<%# "MettreAZero(" + Eval("Id") + ");" %>
您應該停止提交事件回發,因為您將丟失剛修改的狀態。 您只需要修改MettreAZero()
即可return false;
。 另一種選擇是使用AJAX。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.