DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon
来源:互联网 发布:出奇制胜软件下载 编辑:程序博客网 时间:2024/04/29 18:06
DataGrid中想实现这样的效果:
根据某一字段列的值动态改变按钮的文本,比如:
点击按钮列,自动更新某列原为0的值为1,并将按钮列的文本改为“置0”,
再按下,自动更新某列原为1的值为0,并将按钮列的文本改为“置1”,
最终通过NamingContainer,实现! 方法如下 :
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="HonoreeID" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="status" HeaderText="状态">
<HeaderStyle Width="300px"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="状态是否为0">
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:Label id="lb" runat="server" Visible="false" Text='<%# ((DataBinder.Eval(Container, "DataItem.status", "{0}"))=="0")?"是":"<font color=red>否</font>" %>'>
</asp:Label>
<asp:Button ID="changeState" Runat="server" Text='<%# ((DataBinder.Eval(Container, "DataItem.status", "{0}"))=="0")?"转为1":"转为0" %>'>
</asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
后台:
protected System.Web.UI.WebControls.DataGrid DataGrid1;
public int KeyID
{
get
{
object o =ViewState ["KeyID"];
if(o!=null)
{
return int.Parse(ViewState ["KeyID"].ToString());
}
else
{
return 0;
}
}
set
{
ViewState ["KeyID"] = value;
}
}
public int RowState
{
get
{ return int.Parse(ViewState ["RowState"].ToString());
}
set
{
ViewState ["RowState"] = value;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if(IsPostBack)
{return ;
}
getData();
}
private void getData()
{
//SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["DsnPubs"]);
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Mblog"]);
SqlCommand cmd;
con.Open();
cmd = new SqlCommand("select * from dbo.Honoree", con);
DataGrid1.DataSource = cmd.ExecuteReader();
DataGrid1.DataBind();
con.Close();
}
private bool UpdateData(int ID,int OldState)
{
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Mblog"]);
SqlCommand cmd;
con.Open();
try
{
string strSql="Update Honoree set Status={0} where HonoreeID={1}";
strSql=string.Format(strSql,(OldState==0?1:0).ToString(),ID.ToString());
cmd = new SqlCommand(strSql, con);
cmd.ExecuteNonQuery();
cmd.Dispose();
return true;
}
catch
{
return false;
}
finally
{
con.Close();
con.Dispose();
}
return false;
}
Web 窗体设计器生成的代码
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Button b=(Button)e.Item.FindControl("changeState");
if(b!=null)
{
b.Click+=new EventHandler(b_Click);
}
}
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
}
private void b_Click(object sender, EventArgs e)
{
Button but = (Button)sender;
DataGrid dg = (DataGrid)but.NamingContainer.NamingContainer;
//此处是关键!!即找到包含按钮的命名容器的上层命名容器
if(dg == null) return;
DataGridItem di =(DataGridItem)but.NamingContainer;
TableCell key= (TableCell)di.Cells[0];
TableCell state= (TableCell)di.Cells[1];
KeyID=(key==null)?0:int.Parse(key.Text);
RowState=(state==null)?0:int.Parse(state.Text);
Response.Write(UpdateData(this.KeyID,this.RowState).ToString());
getData();
}
- DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon
- DATAGRID 加入全选反选的按钮
- asp.net中的NamingContainer详解
- 选择按钮(全选与反选)
- DataGrid中的公共事件
- 用代码创建DataGrid的多链接及checkbox事件响应(downmoon)
- DataGrid的分页按钮 事件处理
- 一行代码实现 按钮的选中与反选
- Android中的按钮事件
- DataGrid应用技巧两则(downmoon)---列求和与列字段转换d
- DataGrid应用技巧两则(downmoon)---列求和与列字段转换
- DataGrid应用技巧两则(downmoon)---列求和与列字段转换
- Android中的全选与反选
- JQuery 中的事件命名空间
- Jack's Notes12——全选、全不选、反选(循环遍历给按钮动态注册事件)
- WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)
- WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)
- js按钮全选反选
- 改变人生的5句话
- 百万条数据分页
- hibernate里使用hql语句处理多表查询
- tomcat环境变量设置
- The 4 Wives 生命中的四位爱人
- DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon
- 填数
- 几句鼓励别人的话(英)
- 德信三年拿下中国手机软件设计龙头
- CoCreateInstance
- 傻瓜总会发现有比他更傻的人在赞美他
- 取得查询的记录总数分页显示用的方法
- LNetAnt(The download tool for all POXSIX platform as linux) project site is onlining!
- Vista: Glass in C#