<asp:TemplateColumn> <HeaderTemplate> <asp:LinkButton id="Linkbutton1" onclick="cmdSort_Click" Runat="server" CommandArgument="jhmc">名称</asp:LinkButton> </HeaderTemplate> <ItemTemplate>
<asp:HyperLink id="Hyperlink7" Runat="server"></asp:HyperLink> </ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn> <HeaderTemplate> <asp:LinkButton id="Linkbutton2" onclick="cmdSort_Click" Runat="server" CommandArgument="jhmc">性别</asp:LinkButton> </HeaderTemplate> <ItemTemplate>
<asp:HyperLink id="Hyperlink7" Runat="server"></asp:HyperLink> </ItemTemplate>
</asp:TemplateColumn>
我需要设置LinkButton1.Text="名称(升)";Linkbutton2.Text="性别"。
或LinkButton1.Text="名称";Linkbutton2.Text="性别(升)"。问,在.cs文件中,如何访问Linkbutton1,LinkButton2?
<asp:HyperLink id="Hyperlink7" Runat="server"></asp:HyperLink> </ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn> <HeaderTemplate> <asp:LinkButton id="Linkbutton2" onclick="cmdSort_Click" Runat="server" CommandArgument="jhmc">性别</asp:LinkButton> </HeaderTemplate> <ItemTemplate>
<asp:HyperLink id="Hyperlink7" Runat="server"></asp:HyperLink> </ItemTemplate>
</asp:TemplateColumn>
我需要设置LinkButton1.Text="名称(升)";Linkbutton2.Text="性别"。
或LinkButton1.Text="名称";Linkbutton2.Text="性别(升)"。问,在.cs文件中,如何访问Linkbutton1,LinkButton2?
//((LinkButton)(MyDataGrid.FindControl("LinkButton1"))) //Linkbutton1
//((LinkButton)(MyDataGrid.FindControl("LinkButton2"))) //linkbutton2事件声名:((LinkButton)(MyDataGrid.FindControl("LinkButton1"))).CommandArgument="";
((LinkButton)(MyDataGrid.FindControl("LinkButton1"))).Command +=new CommandEventHandler(LinkButton1_Command);
/////////////////////////////////
private void LinkButton1_Command(object sender, CommandEventArgs e)
{
}
if(是页眉)
{
if(条件)
{
第一列。text="名称(升)";
第二列。text="性别";
}
else
{
第一列。text="名称";
第二列。text="性别(升)";
}
}
((LinkButton)(MyDataGrid.FindControl("LinkButton2"))) //linkbutton2这两个就是CS里的访问样子和普通的LinkButton同样用
((LinkButton)(MyDataGrid.FindControl("LinkButton2"))) //linkbutton2
之前最好还判断下,防止强行转换出错。
if(Item.ItemType==ListItemType.Head)
{
LinkButton btn = Item.Cells[n].FindControl("LinkButton1");//n 是那一列的序号
if (btn != null)
btn.Text = "名称(升)"
}
类似的其他列也可以这么做
if(e.Item.ItemType==ListItemType.Header)
{
LinkButton lbt1 = (LinkButton)e.Item.FindControl("Linkbotton1");
LinkButton lbt2 = (LinkButton)e.Item.FindControl("Linkbotton2");
...
lbt1.Text="xxxx";
lbt2.Text="yyyy";
...}
{
if(e.CommandName=="LinkButtonID")
{}
}
注意,我需要在ItemDataBound事件外,修改/访问Linkbutton1\linkbutton2的属性。
以下两方法根本不行:
1、DataGrid.FindControl("LinkButton1")根本就找不到控件
2、ItemDataBound时,我还不需要修改/访问button对象。我需要在ItemDataBound事件外访问对象。
请大家再帮忙想想。
我试了,除ItemDataBound事件之外,DataGrid好象再也访问/修改了head中的控件控件了。而我的程序中,需要在ItemDataBound事件之外访问head中的控件属性。
Iitm是哪来的?
是在ItemDataBound是事件中的吧?ItemDataBound事件时,我并不需要访问/修改button。我要在别的事件中,访问/修改button。
别的事件中,只有和DataGrid.Items[i],可这时无法返回Grid头。
((LinkButton)e.Item.FindControl("LinkButton2ID"))....
但页面重载入时,全局变量就丢了。还是起不到要随时访问Grid的Head中控件的做用。
不要再说用
if(e.Item.ItemType==ListItemType.Header)
{
LinkButton lbt1 = (LinkButton)e.Item.FindControl("Linkbotton1");
LinkButton lbt2 = (LinkButton)e.Item.FindControl("Linkbotton2");
}这种方法了。
我说的是CS文件中的除ItemDataBound以外的事件中。