我用如下类创建DataGrid的一个模板列。
public class CTemplateColumn:ITemplate
{
private string colname; public CTemplateColumn(string cname)
{ colname=cname; } public void InstantiateIn(Control container)
{ TextBox l=new TextBox();
l.TextMode=TextBoxMode.MultiLine;
l.Height=84;
l.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(l); } public void OnDataBinding(object sender, EventArgs e)
{
TextBox l=(TextBox) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView) container.DataItem)[colname].ToString();
}}调用方式为:
tc1=new TemplateColumn();
tc1.ItemTemplate=new CTemplateColumn("bzout");
tc1.HeaderText="备注2";
DataGrid1.Columns.Add(tc1);
Page.Controls[1].Controls.Add(DataGrid1);然后数据绑定。省略(应该没问题)
在DataGird中添加编辑按钮列。
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>但是运行是点击编辑后不会触发,DataGrid的EditCommand事件。
public class CTemplateColumn:ITemplate
{
private string colname; public CTemplateColumn(string cname)
{ colname=cname; } public void InstantiateIn(Control container)
{ TextBox l=new TextBox();
l.TextMode=TextBoxMode.MultiLine;
l.Height=84;
l.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(l); } public void OnDataBinding(object sender, EventArgs e)
{
TextBox l=(TextBox) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView) container.DataItem)[colname].ToString();
}}调用方式为:
tc1=new TemplateColumn();
tc1.ItemTemplate=new CTemplateColumn("bzout");
tc1.HeaderText="备注2";
DataGrid1.Columns.Add(tc1);
Page.Controls[1].Controls.Add(DataGrid1);然后数据绑定。省略(应该没问题)
在DataGird中添加编辑按钮列。
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>但是运行是点击编辑后不会触发,DataGrid的EditCommand事件。
解决方案 »
- 怪异的问题 地址栏传参数接收为空?
- 未能写入输出文件~谁遇到过~
- VS2010,一个解决方案,点“重新生成解决方案”就报出十几条错,但如果先点“清理解决方案”,再点“重新生成解决方案”就不报错。
- [SWFUpload+Javascript仿163邮件上传文件]源码
- ultrawebtree控件的小问题
- oledbcommand和oledbdataadapter他们之间的区别是什么呀?我不太懂,请各位大哥讲讲?谢谢了~
- 谁做过QQ彩贝登录进来看看
- 如何实现在刷新后保留住类型为radio的值。。。
- 有没有类似于Microsoft Application Blocks for .NET但是用于ACCESS数据库的啊?
- 用C#开发ASP.NET应用程序时,引用第三方控件后,怎么使用?谢了.!!!
- 怎么在Repeater数据列表中只显示提取出的日期数据中的年月日(目前显示的是年月日时分秒)
- 谢谢
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);在DataGrid1_EditCommand里写
DataGrid1.EditItemIndex=e.Item.ItemIndex;
添加了
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);而且DataGrid1_EditCommand事件根本就不进去,里面写的语句根本就不执行。
然后数据绑定,我设置了断点,debug时根本就不进入断点执行。
然后数据绑定,我设置了断点,debug时根本就不进入断点执行。
然后数据绑定,我设置了断点,debug时根本就不进入断点执行。
<asp:TemplateColumn HeaderText="操作">
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
<ItemTemplate>
<asp:LinkButton Text="浏览" CommandName="edit" ForeColor="blue" runat="server" ID="Linkbutton2" />
</ItemTemplate>
</asp:TemplateColumn>
然后直接在private void MyDataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)中写代码试试看
http://www.codeproject.com/aspnet/DataGridCheckBox.asp
tc1.ItemTemplate=new CTemplateColumn("bzout");
tc1.HeaderText="备注2";
DataGrid1.Columns.Add(tc1);你只定义了 tc1.ItemTemplate 没定义 tc1.EditItemTemplate!