【发布时间】:2015-11-30 04:45:39
【问题描述】:
我想要做的是在网格视图中的复选框被选中时执行一些代码,代码被逐行执行。我调试了代码,尽管检查了复选框,但每次都返回 false。如果删除了条件语句,我尝试执行的代码将起作用。
protected void ShoppingCartButton_Click(object sender, EventArgs e)
{
Label1.Text = "HIH0HI";
OleDbConnection myconn = new OleDbConnection();
myconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|ProjectDatabase.accdb";
string UserID = Session["UserID"].ToString();
StringBuilder sb3 = new StringBuilder();
foreach (GridViewRow row in GridView1.Rows)
{
string unpredictable = "";
bool hi = true;
unpredictable = row.Cells[1].Text;
CheckBox chk = row.Cells[0].Controls[1] as CheckBox;
hi = chk.Checked;
sb3.Append(hi.ToString());
if (hi==true)
{
string command1 = "insert into Cart ([Username],[GameID]) values (@Username, @GameID)";
OleDbCommand cmd = new OleDbCommand(command1, myconn);
cmd.Parameters.AddWithValue("@Username", UserID);
cmd.Parameters.AddWithValue("@GameID", unpredictable);
myconn.Open();
cmd.ExecuteNonQuery();
myconn.Close();
}
}
Label1.Text = sb3.ToString();
}
按钮和网格视图的标记
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" EmptyDataText ="Data Entry Error">
<Columns>
<asp:TemplateField HeaderText ="Add to Cart?">
<ItemTemplate>
<asp:CheckBox ID="checkbx" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button runat="server" id="ShoppingCartButton" Text="Add to shopping cart" OnClick="ShoppingCartButton_Click" />
【问题讨论】:
-
您确定要让所有这些逻辑发生在服务器端吗?在客户端运行复选框逻辑而不是要求完整的回发不是更有意义吗?
-
您可以尝试绑定到 OnCheckedChanged 事件并将标志属性放在类级别。在这里阅读:msdn.microsoft.com/en-us/library/…
标签: c# asp.net gridview checkbox