怎样在ASP.NET的页面中,把DataGrid的表头改名??急急急!!!

usxue 2003-03-20 04:25:18
由用户自己来改动,也就是说定义TextBox,让用户自己来改名字!
怎么实现???
急!!!
谢谢!!!
...全文
80 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qz4365 2003-03-23
  • 打赏
  • 举报
回复
以我的理解,你不能确定表格中显示的列,因此要根据数据库的内容显示表头,因此可以使用在运行中动态添加列的办法,就要先实现ITemplate接口,然后再声明模板列,定义该模板列的表头,绑定的字段,这样,不但可以随意显示表头的内容,也可以自定义绑定的字段
ljfppp 2003-03-22
  • 打赏
  • 举报
回复
不明白你的意思了,连字段名都不知道,是不是你的DataGrid是通用的,可以绑定到多个表中?如果是的话,那你就要自己为DataGrid写绑定的方法了
ljfppp 2003-03-21
  • 打赏
  • 举报
回复
相 icyer()第一次说的那样在膜板列中加TextBox,你可以建立膜板列后将他的这段代码直接拷贝到你的aspx文件中,也可以在DataGrid中加入膜板列后点击有建,->编辑膜板列,然后将TextBox拖到相应的位置(Item/AlertnatingItem/HeadItem),然后就可以了
usxue 2003-03-21
  • 打赏
  • 举报
回复
真的没人帮忙啊??
usxue 2003-03-21
  • 打赏
  • 举报
回复
各位高手,能否留个联系的方式呢:
我的MSN:usxue86@msn.com
谢谢!
usxue 2003-03-21
  • 打赏
  • 举报
回复
呵呵……
我的意思你理解错了,你看看上面的问题好吗?
呵呵……
谢谢!!!
急!!!
:)
icyer 2003-03-21
  • 打赏
  • 举报
回复
在ItemCreated事件中加入:
if (e.Item.ItemType == ListItemType.Header)
{
TextBox txt = new TextBox();
e.Item.Cells[0].Controls.Add(txt);
}
usxue 2003-03-21
  • 打赏
  • 举报
回复
各位帮帮忙啊!
呵呵……
usxue 2003-03-21
  • 打赏
  • 举报
回复
我说在程序中写,怎么写啊??
因为我不知道数据中的字段名!
呵呵……
急!!!
谢谢!
icyer 2003-03-21
  • 打赏
  • 举报
回复
<asp:DataGrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:TextBox Runat="server" ID="txt"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"ID") %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
usxue 2003-03-21
  • 打赏
  • 举报
回复
哎,怎样在模板中加人TextBox呢??
我是初学者啊,千万不嫌我烦啊!
呵呵……
谢谢!
急!
:)
usxue 2003-03-21
  • 打赏
  • 举报
回复
呵呵……
他是用绑定的啊,但绑定的前提是知道数据表中的字段名,但我现在的问题是,我不知道数据表的字段名,怎么办啊??
各位帮帮忙啊!
谢谢你们了!
ljfppp 2003-03-20
  • 打赏
  • 举报
回复
按照你的意思,
foreach(System.Web.UI.WebControls.TableCell tc in e.Item.Cells)
{
System.Web.UI.WebControls.TextBox tb=new System.Web.UI.WebControls.TextBox();
tb.Text=tc.Text;
tc.Controls.Add(tb);
tb.Visible=true;
}
既然是在每一行的每一列都创建TextBox,那为什么不用模板列那?
如果你的目的是页面第一次载入的时候表头是TextBox,用户修改提交以后就变成了Text表头,那么可以这样做:用模板列作表头,模板列中加入TextBox控件,然后在DataGrid的ItemCreate事件中这样写:
public void OnItemCreate(object sender,DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Header && IsPostBack)
{
string str=((TextBox)e.Item.Cells[i].FindControl("HendBox")).Text;
e.Item.Controls.Remove("HendBox");
e.Item.Cells[i].Text = str;
} }
binapex 2003-03-20
  • 打赏
  • 举报
回复
如果没有绑定,在<ItemTemplate></itemtemplate>里面放入控件也行
binapex 2003-03-20
  • 打赏
  • 举报
回复
for i=datagrid1.columns.count-1
datagrid1.columns(i).headertext=textbox(i).text;
next
前提是datagrid1必须是绑定了的。
usxue 2003-03-20
  • 打赏
  • 举报
回复
能说详细点吗??
我不是很懂,很菜的,好吗?
谢谢了!!!
急!!!
qz4365 2003-03-20
  • 打赏
  • 举报
回复
生成一个数据集表oDt,DataTable,存放列的真实字段名和对应名称,datagrid显示其对应的汉字名称,而绑定其字段名.由于绑定的字段名是不变的.改变的只是显示的名称,因此,可以这样做:
foreach(DataRow oDr in DataSet1.Table[0].Rows)
{
oTc = new TemplateColumn();
oTc.ItemTemplate = new CTemplateColumn(strShowFields);
oTc.HeaderText = oDr["Name"].ToString();
oTc.ItemStyle.Wrap = false;
this.datagrid1.Columns.Add(oTc);
}

其中,CTemplateColumn()继承了ITemplate接口,定义如下:
public class CTemplateColumn:ITemplate
{
private string colname;
public CTemplateColumn(string cname)
{
colname=cname;
}
public void InstantiateIn(Control container)
{
LiteralControl l = new LiteralControl();
l.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(l);
}
public void OnDataBinding(object sender, EventArgs e)
{
LiteralControl l = (LiteralControl) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)[colname].ToString();
}
}
usxue 2003-03-20
  • 打赏
  • 举报
回复
哦……我没把问题说清楚。呵呵……
用下面的方法来创建TextBox对象:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
foreach(System.Web.UI.WebControls.TableCell tc in e.Item.Cells)
{
System.Web.UI.WebControls.TextBox tb=new System.Web.UI.WebControls.TextBox();
tb.Text=tc.Text;
tc.Controls.Add(tb);
tb.Visible=true;
}
}

但我怎样才能把tb的值保存呢??
gOODiDEA 2003-03-20
  • 打赏
  • 举报
回复
//get Textbox1.text

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
e.Item.Cells[0].Text = Textbox1.text;
}
}

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧