求助如何保存gridview模板里checkbox的状态

kkkbbnnn 2010-10-05 08:19:14
前台代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>


<asp:GridView ID="GridViewFoodManage" runat="server"
AutoGenerateColumns="False" DataKeyNames="FoodID"
>
<Columns>
<asp:TemplateField HeaderText="是否发布">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</EditItemTemplate>
<ItemTemplate>
      <asp:CheckBox ID="CheckBox1" runat="server"
/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FoodName" HeaderText="菜品名称" />
<asp:BoundField DataField="SupplierID" HeaderText="商家ID" />
<asp:BoundField DataField="Price" HeaderText="价格" />
<asp:BoundField DataField="FoodTypeID" HeaderText="菜品种类" />
<asp:BoundField DataField="Nice" HeaderText="好评数" />
<asp:BoundField DataField="Bad" HeaderText="差评数" />
<asp:BoundField DataField="IsPublished" HeaderText="是否发布" />
<asp:BoundField DataField="IsRecommended" HeaderText="是否推荐" />
</Columns>
<EmptyDataTemplate>
抱歉,没有数据!
</EmptyDataTemplate>
</asp:GridView>

<br />
<asp:Button ID="ButtonApply" runat="server" onclick="ButtonApply_Click"
Text="提交" />
</div>
</form>
</body>
</html>

后端的是:
public partial class FoodAdmin_FoodAudit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

string connectionstr = ConfigurationManager.ConnectionStrings["Ncepu.iDeal.Wmw.Foods.Data.ConnectionString"].ToString();
SqlFoodProvider sfp = new SqlFoodProvider(connectionstr, false, "Ncepu.iDeal.Wmw.Foods.Data.SqlClient");
TList<Food> tfTemp = sfp.GetAll();
TList<Food> tf = new TList<Food>();
for (int i = 0; i < tfTemp.Count; i++)
{
if (tfTemp[i].IsPublished == 0)
{
tf.Add(tfTemp[i]);
}
else
{
continue;
}
}
GridViewFoodManage.DataSource = tf;
GridViewFoodManage.DataBind();

}
protected void ButtonApply_Click(object sender, EventArgs e)
{
for (int i = 0; i < GridViewFoodManage . Rows.Count; i++)
{
GridViewRow row = GridViewFoodManage.Rows[i];
bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;

int BoxID = Convert.ToInt32(GridViewFoodManage.DataKeys[GridViewFoodManage.Rows[i].DataItemIndex].Value);
if (isChecked)
{
Response.Write("ok");
}

}


}

求助啊,如题,每次单击ButtonApply都会刷新页面,使checkbox初始化为未选中,无法Response.Write("ok"),求教怎么解决,急!!!十分感谢!!!
...全文
124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
booth.chen 2010-10-06
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){

string connectionstr = ConfigurationManager.ConnectionStrings["Ncepu.iDeal.Wmw.Foods.Data.ConnectionString"].ToString();
SqlFoodProvider sfp = new SqlFoodProvider(connectionstr, false, "Ncepu.iDeal.Wmw.Foods.Data.SqlClient");
TList<Food> tfTemp = sfp.GetAll();
TList<Food> tf = new TList<Food>();
for (int i = 0; i < tfTemp.Count; i++)
{
if (tfTemp[i].IsPublished == 0)
{
tf.Add(tfTemp[i]);
}
else
{
continue;
}
}
GridViewFoodManage.DataSource = tf;
GridViewFoodManage.DataBind();
}
}
z289830131 2010-10-06
  • 打赏
  • 举报
回复
if(!IsPostBack)
{
BindData();
}
Csdbfans 2010-10-05
  • 打赏
  • 举报
回复
protected void ButtonApply_Click(object sender, EventArgs e)
{
for (int i = 0; i < GridViewFoodManage . Rows.Count; i++)
{
GridViewRow row = GridViewFoodManage.Rows[i];
bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;

int BoxID = Convert.ToInt32(GridViewFoodManage.DataKeys[GridViewFoodManage.Rows[i].DataItemIndex].Value);
if (isChecked)
{
Response.Write("ok");
}

}

}
bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
这一句没有出异常的吗?每行的CheckBox控件ID值应该都不是一样的才对的。你可以在那个浏览器里查看那个页面的源文件,可以看到每个CheckBox控件ID值都不会是CheckBox1。
要取CheckBox控件的值应该类似于像

int BoxID = Convert.ToInt32(GridViewFoodManage.DataKeys[GridViewFoodManage.Rows[i].DataItemIndex].Value);
通过主键的方式来取值,当然拉,我忘记那个写法,也不知道你这个写法对不对的。


无乐不作111 2010-10-05
  • 打赏
  • 举报
回复
楼上的吧
fly0804 2010-10-05
  • 打赏
  • 举报
回复
pageload里加if(!IsPostBack)才能进行回调
wuyq11 2010-10-05
  • 打赏
  • 举报
回复
if(!IsPostBack)BindData();
public void BindData(0
{
SqlFoodProvider sfp = new SqlFoodProvider(connectionstr, false, "Ncepu.iDeal.Wmw.Foods.Data.SqlClient");
TList<Food> tfTemp = sfp.GetAll();
....
}

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧