単純なエンティティのリストで満たされた単純なグリッドビューがあります
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>
私が抱えている問題は、ボタンをクリックすると、選択した行の値がゼロに変更されますが、自動的にグリッドが元の値に再ロードされることです。
何が欠けていますか?
ありがとう