DataGrid中想实现这样的效果:
根据某一字段列的值动态改变按钮的文本,比如:
点击按钮列,自动更新某列原为0的值为1,并将按钮列的文本改为“置0”,
再按下,自动更新某列原为1的值为0,并将按钮列的文本改为“置1”,
最终通过NamingContainer,实现! 方法如下 :
<!--
.lineBorderBlue1
{
BORDER-TOP: #999999 1px groove;
BORDER-BOTTOM: #999999 1px groove;
BORDER-LEFT: #999999 1px groove;
BORDER-RIGHT: #999999 1px groove;
background-color:#efefef;
}
-->
<asp:DataGridid="DataGrid1"runat="server"AutoGenerateColumns="False"> <Columns> <asp:BoundColumnDataField="HonoreeID"HeaderText="ID"></asp:BoundColumn> <asp:BoundColumnDataField="status"HeaderText="状态"> <HeaderStyleWidth="300px"></HeaderStyle> </asp:BoundColumn> <asp:TemplateColumnHeaderText="状态是否为0"> <HeaderStyleHorizontalAlign="Center"Width="10%"></HeaderStyle> <ItemStyleHorizontalAlign="Center"></ItemStyle> <ItemTemplate> <asp:Labelid="lb"runat="server"Visible="false"Text='<%#((DataBinder.Eval(Container,"DataItem.status","{0}"))=="0")?"是":"<fontcolor=red>否</font>"%>'> </asp:Label> <asp:ButtonID="changeState"Runat="server"Text='<%#((DataBinder.Eval(Container,"DataItem.status","{0}"))=="0")?"转为1":"转为0"%>'> </asp:Button> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>
|
后台:
<!--
.lineBorderBlue1
{
BORDER-TOP: #999999 1px groove;
BORDER-BOTTOM: #999999 1px groove;
BORDER-LEFT: #999999 1px groove;
BORDER-RIGHT: #999999 1px groove;
background-color:#efefef;
}
-->
protectedSystem.Web.UI.WebControls.DataGridDataGrid1;
publicintKeyID ...{ get ...{ objecto=ViewState["KeyID"]; if(o!=null) ...{ returnint.Parse(ViewState["KeyID"].ToString()); } else ...{ return0; } } set ...{ ViewState["KeyID"]=value; } } publicintRowState ...{ get ...{returnint.Parse(ViewState["RowState"].ToString());
} set ...{ ViewState["RowState"]=value; } } privatevoidPage_Load(objectsender,System.EventArgse) ...{ if(IsPostBack) ...{return; } getData(); }
privatevoidgetData() ...{ //SqlConnectioncon=newSqlConnection(ConfigurationSettings.AppSettings["DsnPubs"]);
SqlConnectioncon=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Mblog"]); SqlCommandcmd; con.Open(); cmd=newSqlCommand("select*fromdbo.Honoree",con); DataGrid1.DataSource=cmd.ExecuteReader(); DataGrid1.DataBind(); con.Close(); }
privateboolUpdateData(intID,intOldState) ...{ SqlConnectioncon=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Mblog"]); SqlCommandcmd; con.Open(); try ...{ stringstrSql="UpdateHonoreesetStatus={0}whereHonoreeID={1}"; strSql=string.Format(strSql,(OldState==0?1:0).ToString(),ID.ToString()); cmd=newSqlCommand(strSql,con); cmd.ExecuteNonQuery(); cmd.Dispose(); returntrue; } catch ...{ returnfalse; } finally ...{ con.Close(); con.Dispose();
} returnfalse; }
Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码 overrideprotectedvoidOnInit(EventArgse) ...{ // //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); }
/**////<summary> ///设计器支持所需的方法-不要使用代码编辑器修改 ///此方法的内容。 ///</summary> privatevoidInitializeComponent() ...{ this.DataGrid1.ItemCreated+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemCreated); this.DataGrid1.ItemDataBound+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound); this.Load+=newSystem.EventHandler(this.Page_Load);
} #endregion
privatevoidDataGrid1_ItemCreated(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse) ...{ if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) ...{ Buttonb=(Button)e.Item.FindControl("changeState"); if(b!=null) ...{
b.Click+=newEventHandler(b_Click); } }
}
privatevoidDataGrid1_ItemDataBound(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse) ...{
}
privatevoidb_Click(objectsender,EventArgse) ...{ Buttonbut=(Button)sender; DataGriddg=(DataGrid)but.NamingContainer.NamingContainer; //此处是关键!!即找到包含按钮的命名容器的上层命名容器 if(dg==null)return; DataGridItemdi=(DataGridItem)but.NamingContainer; TableCellkey=(TableCell)di.Cells[0]; TableCellstate=(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(); }
|
|
分享到:
相关推荐
Flex dataGrid 全选、反选 checkBox 不是很完善,但很有借鉴意义
Wpf datagrid 多选、单选、反选(单选一次选中,无需点两次)
通过整合网络资源完成的一个简单的silverlight项目实例(菜鸟一枚,与大家分享)
最经典的datagrid全选/反选控件,自定义渲染类,带有使用说明。如果不明白可随时联系
NULL 博文链接:https://taomujian.iteye.com/blog/294748
easyui1.4.5增加一个鼠标滑过行,注意是行不是列,然后弹出框显示某些关键信息,如经典的图片预览操作,内容提供demo,并附修改方法,这个方法是修改的源码,没有增加扩展实现,若愿意请自行实现
flex datagrid 添加按钮并根据特定内容进行判断是否显示按钮
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip
DataGrid弹出删除按钮的例子,通俗易懂,能快速理解该技术,无方法。
主要介绍了C#实现给DataGrid单元行添加双击事件的方法,较为详细的分析了C#给DataGrid单元添加双击事件的步骤及相关实现代码,具有一定参考借鉴价值,需要的朋友可以参考下
Datagrid键盘事件响应
DataGrid中嵌套DataGrid,修改后也适用DataGrid中嵌套DataList,DataList中嵌套DataList
jeasyui-datagrid-datagrid 开发参考
flex4 DataGrid 头标签嵌套CheckBox按钮
本例子是wpf中datagrid的增加修改,对于datagrid中的canuseraddrows=true,对当前空白行进行的添加数据,修改时,鼠标离开焦点可自动更新数据库,删除等等。不需要多余的界面进行添加修改等,利用datagrid的属性,...
Datagrid实现双击行事件,供大家一起共同分享学习。
DataGrid中嵌入comBox,MVVM,
jquery-easyui的扩展组件jquery-easyui-datagridview,其中的datagrid-detailview.js可方便地生成子网格,但是每行均默认生成展开按钮,实际我们希望对某些行不显示展开按钮,网上很多人提供的解决方案就是通过dom...
javascript实现datagrid 全选和反选,很实用