动态生成一个按钮列,循环给这个按钮列赋属性(如CommandName等),然后在DataGrid的ItemCommand中写事件!
解决方案 »
- datagridview中的数据写入到EXCEL中格式的问题
- 求助,急!C# 2005 开发ASP.NET编译时找不到前台控件
- 动态生成LINKBUTTON不能运行事件,WHY??????????????????????
- 开一个线程执行web服务,和异步调用web服务,效果一样吗?
- 怎么datagrid中选定一行啊?
- 批量导入
- 如何让IE或WebBrowser窗口内自动打开word文件?
- C#里如何对2个内存表进行比较?
- ====求Socket传送文件的代码。===
- 代码添加的控件在postback后消失了。。。。我想把代码添加的控件在页面上永久显示。请教高手。。。
- 水晶報表---怎樣打印固定格式的報表
- 怎样将SQL数据库中的表,转换为XML格式的treenode
<asp:datagrid OnDeleteCommand="MyDataGrid_Delete"> //按钮列事件绑定
... ...
<Columns>
... ...
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>//删除按钮列
</Columns>
</asp:datagrid>
如果不是这样的典型功能,也可以在事件处理函数中(如上的MyDataGrid_Delete)使用其它功能的。
本文所有举例都将使用以下DataGrid:
<asp:DataGrid id="dg" runat="server"
Bordercolor="black"
gridlines="vertical"
font-names="Arial"
font-size="10pt"
HeaderStyle-BackColor="#FFCC00"
ItemStyle-BackColor="#FFCC66"
AlternatingItemStyle-BackColor="#FFFFFF"
AutoGenerateColumns="False">
<Columns>
</Columns>
</asp:datagrid>
以上DataGrid并不能直接使用,我们需要和具体应用结合。在这里,我们主要目的是知道这个DataGrid的一些具体设置情况。
TemplateColumn
我们知道,有很多方法可以显示一些特殊的数据列,比如使用boundcolumns, hyperlinkcolumns等。然而,使用TemplateColumn可以帮助我们实现更多功能,看以下几个举例:
CheckBox / CheckBoxList
CheckBox可以被用于选择一个数据(事情)的状态是真、假等,由于其很直观的使用“勾”和“叉”来表示真、假,所以,往往比一个简单的“Yes”和“No”更加受欢迎。在DataGrid中,我们可以使用CheckBox来实现很好的数据删除功能,首先,我们让访问者选择需要删除的数据,然后在DataGrid的底部提供一个数据删除提交按钮,这样的删除功能用户比较不容易出错。来看一个举例:
<asp:templatecolumn>
<itemtemplate>
<asp:checkbox runat="server" Checked='<%# Container.DataItem("Married") %>' Enabled="False" id="chk1" />
</itemtemplate>
</asp:templatecolumn>
程序执行效果如下:
以上程序中,CheckBox用于显示数据字段Married,如果该数据字段为真,CheckBox为勾;如果为假,CheckBox为叉。我们发现,使用CheckBox来表现数据字段的真假很直观。
RadioButton / RadioButtonList
RadioButton的使用,我们可以参考以下代码:
<asp:templatecolumn>
<edittemplate>
<asp:radiobuttonList runat="server">
<asp:listitem value="Trek">Star Trek</asp:listitem>
<asp:Listitem value="Wars">Star Wars</asp:listitem>
</asp:radiobuttonlist>
</edittemplate>
</asp:templatecolumn>
程序执行效果如下:
什么时候使用TemplateColumns
本文所有举例都使用templatecolumn来显示数据。尽管不是所有数据显示都是使用templatecolumn,但是,当我们需要对DataGrid具有较多控制的时候,就必须使用它。比如,
HyperLink column只许显示一列数据,当我们需要显示更多的时候,就必须使用templatecolumn了,代码如下:
<asp:templatecolumn>
<itemtemplate>
<a href=../view.aspx?id=<%# Container.DataItem("ID") %>><%# Container.DataItem("ID") & Container.DataItem("Name") %></a> </itemtemplate>
</asp:templatecolumn>
数据验证
程序的严谨最起码也是最常见的就是提交前的数据验证,在DataGrid中使用Web Forms也有这个要求:
<asp:templatecolumn>
<itemtemplate>
<%# Container.DataItem("Age") %>
</itemtemplate>
<edititemtemplate>
<asp:RegularExpressionValidator runat="server" ControlToValidate="txtAge" ErrorMessage="Invalid input for Age"
ValidationExpression="[0-9]{2}" /><br>
<asp:textbox runat="server" id="txtAge" value='<%# Container.DataItem("Age") %>' />
</edititemtemplate>
</asp:templatecolumn>