如何在不使用 On Row Data Bound 的情况下从代码隐藏 Asp.net LinkButton
How to hide Asp.net LinkButton from code behind without using On Row Data Bound
如果我的数据库行中的某个字段为空,我试图将 LinkButton
隐藏在 GridView
中。没有错误,但该行也没有隐藏。这种方法可行还是我必须使用 OnRowDataBound
才能完成?
这是 aspx 页面:
<asp:GridView ID="tblDownload" runat="server" AutoGenerateColumns="false" ClientIDMode="Static">
<Columns>
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="Download Link" SortExpression="Download Link">
<ItemTemplate>
<asp:LinkButton ID="ID" runat="server" Text="Download" OnClick="DownloadFile" CommandArgument='<%# Eval("ID") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这里是 c#:
public void BindTable()
{
try
{
string constr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("dbo.spAllRows", con))
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
tblDownload.DataSource = dt;
tblDownload.DataBind();
}
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
var FileName = sdr["FILE_NAME"].ToString();
con.Close();
if (FileName == "" || FileName == null)
{
LinkButton DownloadLink = tblDownload.FindControl("ID") as LinkButton;
DownloadLink.Visible = false;
}
}
}
}
}
catch (Exception ex)
{
}
}
我想你想要这样的东西。您可以使用三元运算符根据行中的值切换 Visible
属性。
<asp:LinkButton ID="ID" Visible='<%# string.IsNullOrEmpty(Eval("YourColumn").ToString()) ? false : true %>'
runat="server" Text="Download"></asp:LinkButton>
如果我的数据库行中的某个字段为空,我试图将 LinkButton
隐藏在 GridView
中。没有错误,但该行也没有隐藏。这种方法可行还是我必须使用 OnRowDataBound
才能完成?
这是 aspx 页面:
<asp:GridView ID="tblDownload" runat="server" AutoGenerateColumns="false" ClientIDMode="Static">
<Columns>
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="Download Link" SortExpression="Download Link">
<ItemTemplate>
<asp:LinkButton ID="ID" runat="server" Text="Download" OnClick="DownloadFile" CommandArgument='<%# Eval("ID") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这里是 c#:
public void BindTable()
{
try
{
string constr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("dbo.spAllRows", con))
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
tblDownload.DataSource = dt;
tblDownload.DataBind();
}
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
var FileName = sdr["FILE_NAME"].ToString();
con.Close();
if (FileName == "" || FileName == null)
{
LinkButton DownloadLink = tblDownload.FindControl("ID") as LinkButton;
DownloadLink.Visible = false;
}
}
}
}
}
catch (Exception ex)
{
}
}
我想你想要这样的东西。您可以使用三元运算符根据行中的值切换 Visible
属性。
<asp:LinkButton ID="ID" Visible='<%# string.IsNullOrEmpty(Eval("YourColumn").ToString()) ? false : true %>'
runat="server" Text="Download"></asp:LinkButton>