【发布时间】:2013-11-16 21:21:00
【问题描述】:
我有一个简单的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>
我遇到的问题是,当我单击按钮时,所选行的值会更改为零,但随后会自动将网格重新加载为其原始值。
我错过了什么?
谢谢
【问题讨论】:
-
将
MettreAZero()修改为return false;以停止处理提交。 -
是的,修复了它。我还添加了将 OnClientClick 更改为此 OnClientClick=''
-
您是否能够使用 document.getElementById("magrid") 获取 GridView 元素?您应该使用 。
-
如果我这样做 var name = ;警报(名称); name 等于 HTMLTableElement,它没有行.. 我想我错过了一些明显的东西
-
var name = '';工作,缺少一些'
标签: c# javascript jquery asp.net gridview