紧急呼救:datagrid动态绑定模板列、绑定列后出现的问题,内有详细代码,up有分
火电 2005-01-14 12:44:40 声明一下:datagrid控件在html页面中只有一列
<asp:datagrid id="ExportGrid" style="Z-INDEX: 102" runat="server" Width="100%" GridLines="Vertical"
AutoGenerateColumns="False" PageSize="15">
<AlternatingItemStyle CssClass="gridEvenRow"></AlternatingItemStyle>
<ItemStyle CssClass="gridOddRow"></ItemStyle>
<HeaderStyle CssClass="gridHead" VerticalAlign="Middle"></HeaderStyle>
<Columns>
<asp:TemplateColumn Visible="False" HeaderText="模板列"></asp:TemplateColumn>
</Columns>
<PagerStyle Visible="False"></PagerStyle>
</asp:datagrid>
本人通过如下函数的方法加入了模板列和绑定列
private void AddBoundColumnToGrid(string strHeaderText,bool bWrap,int iHeaderWidth,string strDataField,bool bVisible,int iColumnIndex,DataGrid objGrid)
{
BoundColumn dc = new BoundColumn();
dc.HeaderText = strHeaderText;
dc.HeaderStyle.Wrap = bWrap;
dc.HeaderStyle.Width = Unit.Parse(iHeaderWidth.ToString() + "%");
dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
dc.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
dc.ItemStyle.VerticalAlign = VerticalAlign.Middle;
dc.DataField = strDataField;
dc.Visible = bVisible;
dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
objGrid.Columns.AddAt(iColumnIndex,dc);
}
private void AddTemplateColumnToGrid(DataGrid objGrid,int iColumnIndex,
string headtype,string headid,string headinfo,
string itemtype,string itemid,string iteminfo)
{
TemplateColumn tc = new TemplateColumn();
tc.HeaderTemplate = new DataGridTemplates.CTemplateColumn(headtype,headid,true,headinfo);
tc.ItemTemplate = new DataGridTemplates.CTemplateColumn(itemtype,itemid,false,iteminfo);
tc.HeaderStyle.Width = Unit.Parse("10%");
tc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
tc.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
tc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
tc.ItemStyle.VerticalAlign = VerticalAlign.Middle;
objGrid.Columns.AddAt(iColumnIndex,tc);
}
其中的 类 DataGridTemplates.CTemplateColumn 就是继承 ITemplate 类的一个接口,控制模板列中增加何种控件
然后绑定数据后这个时候都没有问题,在 ItemDataBound 事件中都可以获取到绑定到列上的值
但是问题出现在点击模板列上的linkbutton(是通过模板列生成的)时候,没有任何事件触发并且
datagrid上绑定的数据不见了,只是做了向服务端提交的功能,我是想通过点击某一列上的linkbutton
然后进入到该按钮的事件中,把每行中的隐藏列中的数据读取出来
注意:我还不想在html页面中把要显示的列都写死,我想所有要显示的列都灵活读取。
谁帮忙解决一下问题,
还有,在 ItemDataBound 事件中我使用
((LinkButton)e.Item.Cells[7].FindControl("btnShowInfo")).Click += new System.EventHandler(this.ShowInfoClick);没有反应进入不到 ShowInfoClick 函数
在ItemCommand 事件中如果写
但是这个时候 Cells[7] 还没有生成,还是取不到
帮忙啊,急用!!!