各位高手,小弟请教一个问题:
asp.net 页面中有个Gridview控件。其中有一列是利用Templatefield模板绑定了3个Linkbutton按钮,我现在要在CS后台代码中去改变3个Linkbutton的Enabled属性,请问我该怎么写,我的写法是
Linkbutton lbt = (LinkButton)Gridview1.TemplateControl.FindControl("Linkbutton1");
lbt.Enabled = true;
但是会报未实例化的错误,我有调试过,lbt的到的是null值。请高手赐教!
asp.net 页面中有个Gridview控件。其中有一列是利用Templatefield模板绑定了3个Linkbutton按钮,我现在要在CS后台代码中去改变3个Linkbutton的Enabled属性,请问我该怎么写,我的写法是
Linkbutton lbt = (LinkButton)Gridview1.TemplateControl.FindControl("Linkbutton1");
lbt.Enabled = true;
但是会报未实例化的错误,我有调试过,lbt的到的是null值。请高手赐教!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
foreach (GridViewRow gvr in GridView1.Rows)
{
Linkbutton lbt = (LinkButton)gvr.FindControl("Linkbutton1");
lbt.Enabled = true;
}
}
Linkbutton lbtn = Gridview1.row[i].cell[j].FindControl("Linkbutton1") as Linkbutton ;
<asp:TemplateField HeaderText="髡夔" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="lbtlook" runat="server" CausesValidation="False"
CommandName="Select" Text="脤艘"></asp:LinkButton>
<asp:LinkButton ID="lbtupdate" runat="server" CausesValidation="False"
CommandName="Edit" Text="晤憮"></asp:LinkButton>
<asp:LinkButton ID="lbtdelete" runat="server" CausesValidation="False"
CommandName="Delete" Text="刉壺" OnClientClick="return confirm('斕隅猁刉壺鎘?');"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Text="脤艘"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="秏"></asp:LinkButton>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Center" Width="100px" VerticalAlign="Middle" />
<ItemStyle HorizontalAlign="Center" Width="100px" VerticalAlign="Middle" />
</asp:TemplateField>cs代码 for (int f = 0; f < dt.Tables[0].Rows.Count; f++)
{
string functid = dt.Tables[0].Rows[0][0].ToString().Trim();
switch (functid)
{
case "01":
imgmp1.Visible = true;
break;
case "02":
LinkButton lbt = (LinkButton)gvdate.TemplateControl.FindControl("lbtupdate");
lbt.Enabled=false;
break;
case "03":
ImageMap1.Enabled = true;
LinkButton lbt1 = (LinkButton)gvdate.TemplateControl.FindControl("lbtdelete");
lbt1.Enabled = false;
break;
default:
break; }
}
for (int f = 0; f < dt.Tables[0].Rows.Count; f++)
{
string functid = dt.Tables[0].Rows[f][0].ToString().Trim();
switch (functid)
{
case "01":
imgmp1.Visible = true;
break;
case "02":
LinkButton lbt = (LinkButton)gvdate.Rows[f].Cells[1].FindControl("lbtupdate");//cell[1]這里的1改成你自己對應的
lbt.Enabled = false;
break;
case "03":
ImageMap1.Enabled = true;
LinkButton lbt1 = (LinkButton)gvdate.Rows[f].Cells[2].FindControl("lbtdelete");//cell[2]這里的2改成你自己對應的
lbt1.Enabled = false;
break;
default:
break;
}
}
for (int f = 0; f < dt.Tables[0].Rows.Count; f++)
{
string functid = dt.Tables[0].Rows[0][0].ToString().Trim();
switch (functid)
{
case "01":
imgmp1.Visible = true;
break;
case "02":
foreach(GridViewRow row in gvdate.Rows)
{
LinkButton lbt = (LinkButton)row.FindControl("lbtupdate");
lbt.Enabled=false;
}
break;
case "03":
ImageMap1.Enabled = true;
foreach(GridViewRow row in gvdate.Rows)
{
LinkButton lbt1 = (LinkButton)row.FindControl("lbtdelete");
lbt1.Enabled = false;
}
break;
default:
break; }
}
{
string functid = dt.Tables[0].Rows[f][0].ToString().Trim();
switch (functid)
{
case "01":
imgmp1.Visible = true;
break;
case "02":
LinkButton lbt = (LinkButton)gvdate.Rows[f].Cells[1].FindControl("lbtupdate");//cell[1]這里的1改成你自己對應的列
lbt.Enabled = false;
break;
case "03":
ImageMap1.Enabled = true;
LinkButton lbt1 = (LinkButton)gvdate.Rows[f].Cells[1].FindControl("lbtdelete");//cell[1]這里的2改成你自己對應的列
lbt1.Enabled = false;
break;
default:
break;
}
}
这下就对了,是吧是跟9L的有点像,确实是,就是把 那个2改为1就行了,三个linkButton都在同一列故是用Cell[1]