我遇到了很多麻烦,并且我已经跟踪了大量具有相同问题的人的示例代码。基本上我有一个gridview,我有一个带复选框的列和另一个带有linkbutton的列。如果另一列中的数据绑定链接按钮不为空(字段不为空),我想隐藏/禁用行中的复选框。我已经尝试了各种方法......(lb!= null),(lb.Text!= null)另外,我已经尝试按列号查找控件...没有运气
我做错了什么? (gridview函数通常不是复选框隐藏功能)
我试过调试,似乎没有通过第一个if语句(rowtype == ...)
的.cs:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lb = e.Row.FindControl("LinkButtonPO") as LinkButton;
if (lb.CommandArgument != null)
{
CheckBox cb = e.Row.FindControl("CbPO") as CheckBox;
if (cb != null)
cb.Visible = false;
}
}
}
的.aspx
<asp:GridView ID="GridView1"
CssClass="Gridview" runat="server"
AllowSorting="True"
AutoGenerateColumns="False"
DataKeyNames="Order_ID"
DataSourceID="OrderHistoryData"
HorizontalAlign="Center"
EmptyDataText="No Data to Display"
Width="785px"
AlternatingRowStyle-CssClass="alt" AllowPaging="True"
PagerStyle-CssClass="pager" GridLines="None" PageSize="20"
ShowHeaderWhenEmpty="True" OnRowDataBound="GridView1_RowDataBound">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonPO" runat="server" CommandArgument='<%# Bind("PO_ID") %>' OnClick="LinkButtonPO_Click" Text='<%# Bind("PO_Lit") %>'></asp:LinkButton>
</ItemTemplate>
<asp:TemplateField >
<ItemTemplate>
<asp:CheckBox ID="CbPO" runat="server" OnCheckedChanged="CbPO_CheckedChanged" Visible="true" />
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:0)
LinkButton.CommandArgument
以这种方式实现(ILSpy on .NET 4):
public string CommandArgument
{
get
{
string text = (string)this.ViewState["CommandArgument"];
if (text != null)
{
return text;
}
return string.Empty;
}
set
{
this.ViewState["CommandArgument"] = value;
}
}
因此,在ASP.NET中,属性通常不是null
而是String.Empty
。
所以改变
if (lb.CommandArgument != null)
cb.Visible = false;
到
cb.Visible = lb.CommandArgument.Length > 0;
答案 1 :(得分:0)
我这样使用并为我工作
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lb = e.Row.FindControl("LinkButtonPO") as LinkButton;
CheckBox cb = e.Row.FindControl("CbPO") as CheckBox;
if (cb != null)
{
cb.Visible = false;
}
}
}
答案 2 :(得分:-1)
你没有使用Columns和Asp:TemplateField for Linkbutton所以请使用它。