如果数据库行中的字段为空,我试图在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)
{
}
}
答案 0 :(得分:0)
我认为您想要这样的东西。您可以使用三元运算符根据行中的值切换Visible
属性。
<asp:LinkButton ID="ID" Visible='<%# string.IsNullOrEmpty(Eval("YourColumn").ToString()) ? false : true %>'
runat="server" Text="Download"></asp:LinkButton>