示意图如下(选中checkbox累加列Quantity中的数量):因为使用的服务器控件,所以只能采用这种方式,但是实现不了,用stringbuilder拼接也调试不了,不知道哪里错了。
现在貌似就一直循环实现不了,求大神帮忙!不知道还有没有其他更简单的方法。 protected void cbPick_CheckedChanged(object sender, EventArgs e)
{
try
{ GridView gv = (GridView)gvDropShip;
foreach (GridViewRow gvr in gvDropShip.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("cbPick");
StringBuilder script = new StringBuilder();
script.Append("if(this.checked){");
script.Append("var txt = document.getElementById('");
script.Append(txtTotalQty.ClientID);
script.Append("')");
script.Append("var rowIndex = this.parentElement.parentElement.rowIndex;");
script.Append("var gv = document.getElementById('");
script.Append(gv.ClientID);
script.Append("')");
script.Append("var val = gv.rows(rowIndex).cells(7).innerText;");
script.Append("document.getElementById('");
script.Append(txtTotalQty.ClientID);
script.Append("')");
script.Append("txt.value = Number(txt.value) + Number(val);}");
script.Append("else{");
script.Append("txt.value = Number(txt.value) - Number(val);}");
cb.Attributes.Add("onclick", script.ToString());
} }
catch (Exception ex)
{
WriteLog("Caused by 'cbPickAll_CheckedChanged'. " + ex.Message, string.Empty, true, true);
MessageBox("System Error: " + ex.Message);
}
}web上的就稍微截取点 意思下<asp:GridView ID="gvDropShip" runat="server" CssClass="gv"
AutoGenerateColumns="false" BorderWidth="0px" CellPadding="2" CellSpacing="1"
OnRowDataBound="gvDropShip_RowDataBound">
<FooterStyle CssClass="gvFooterStyle" />
<RowStyle CssClass="gvRowStyle" />
<PagerStyle CssClass="gvPagerStyle" HorizontalAlign="Left" />
<SelectedRowStyle CssClass="gvSelectedRowStyle" />
<HeaderStyle CssClass="gvHeaderStyle" HorizontalAlign="Center" />
<AlternatingRowStyle CssClass="gvAlternatingRowStyle" />
<Columns>
<asp:TemplateField HeaderStyle-CssClass="freeze" ItemStyle-CssClass="freeze">
<HeaderTemplate>
<asp:CheckBox ID="cbPickAll" runat="server"
AutoPostBack="true" OnCheckedChanged="cbPickAll_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbPick" runat="server" AutoPostBack="true" OnCheckedChanged="cbPick_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
现在貌似就一直循环实现不了,求大神帮忙!不知道还有没有其他更简单的方法。 protected void cbPick_CheckedChanged(object sender, EventArgs e)
{
try
{ GridView gv = (GridView)gvDropShip;
foreach (GridViewRow gvr in gvDropShip.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("cbPick");
StringBuilder script = new StringBuilder();
script.Append("if(this.checked){");
script.Append("var txt = document.getElementById('");
script.Append(txtTotalQty.ClientID);
script.Append("')");
script.Append("var rowIndex = this.parentElement.parentElement.rowIndex;");
script.Append("var gv = document.getElementById('");
script.Append(gv.ClientID);
script.Append("')");
script.Append("var val = gv.rows(rowIndex).cells(7).innerText;");
script.Append("document.getElementById('");
script.Append(txtTotalQty.ClientID);
script.Append("')");
script.Append("txt.value = Number(txt.value) + Number(val);}");
script.Append("else{");
script.Append("txt.value = Number(txt.value) - Number(val);}");
cb.Attributes.Add("onclick", script.ToString());
} }
catch (Exception ex)
{
WriteLog("Caused by 'cbPickAll_CheckedChanged'. " + ex.Message, string.Empty, true, true);
MessageBox("System Error: " + ex.Message);
}
}web上的就稍微截取点 意思下<asp:GridView ID="gvDropShip" runat="server" CssClass="gv"
AutoGenerateColumns="false" BorderWidth="0px" CellPadding="2" CellSpacing="1"
OnRowDataBound="gvDropShip_RowDataBound">
<FooterStyle CssClass="gvFooterStyle" />
<RowStyle CssClass="gvRowStyle" />
<PagerStyle CssClass="gvPagerStyle" HorizontalAlign="Left" />
<SelectedRowStyle CssClass="gvSelectedRowStyle" />
<HeaderStyle CssClass="gvHeaderStyle" HorizontalAlign="Center" />
<AlternatingRowStyle CssClass="gvAlternatingRowStyle" />
<Columns>
<asp:TemplateField HeaderStyle-CssClass="freeze" ItemStyle-CssClass="freeze">
<HeaderTemplate>
<asp:CheckBox ID="cbPickAll" runat="server"
AutoPostBack="true" OnCheckedChanged="cbPickAll_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbPick" runat="server" AutoPostBack="true" OnCheckedChanged="cbPick_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:CheckBox ID="cbPick" runat="server" onclick="cbPickClick(this);" />这样写不行是吧?