我有一个带有模板字段的Gridview
<asp:TemplateField HeaderText="Scoring">
<ItemTemplate>
<asp:DropDownList ID="ddlY_N_NA" runat="server"
Visible='<%#Eval("IsTextBox")%>' ></asp:DropDownList>
<asp:TextBox ID="txtAudit" runat="server"
Visible='<%#Eval("IsTextBox")%>' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
我需要根据Textbox的可见性设置下拉列表的可见性。 两行中的任何一个都必须每行显示,但不能同时显示。 可以帮助我。
提前致谢。
答案 0 :(得分:1)
您可以使用Gridview的RowDataBound
事件来执行此操作。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow dr = ((DataRowView)e.Row.DataItem).Row;
if (dr["ColumnName"].ToString()) // your Condition
{
((DropDownList)e.Row.FindControl("dropdownID")).Visible = false;
}
else if (dr["ColumnName"].ToString()) // your Condition
{
((TextBox)e.Row.FindControl("TextboxID")).Visible = false;
}
}
}
答案 1 :(得分:1)
尝试以下方法:
<asp:TemplateField HeaderText="Scoring">
<ItemTemplate>
<asp:DropDownList ID="ddlY_N_NA" runat="server"
Visible='<%# ((bool)Eval("IsTextBox")) ? "false" : "true" %>' >
</asp:DropDownList>
<asp:TextBox ID="txtAudit" runat="server"
Visible='<%#Eval("IsTextBox")%>' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
答案 2 :(得分:0)
嗨,下面的Akram Shahda是我的解决方案
<asp:TemplateField HeaderText="Scoring" HeaderStyle-Width="12%">
<ItemTemplate>
<asp:DropDownList ID="ddlY_N_NA" Visible='<%#SetVisibility(DataBinder.Eval(Container.DataItem,"IsTextBox"))%>'
runat="server" CssClass="Qdropdown">
</asp:DropDownList>
<asp:TextBox onkeypress="return isNumberKey(event);" ID="txtAudit" Visible='<%#Convert.ToBoolean(Eval("IsTextBox"))%>'
MaxLength="10" runat="server" CssClass="Qinputbox" Width="54px" ValidationGroup="txt"></asp:TextBox>
<asp:HiddenField ID="hdnTextBoxCondition" Value='<%#SetTextBoxVisibility(Eval("IsTextBox"),Eval("TextBoxConditions"))%>'
Visible='<%#Eval("IsTextBox")%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
在后面的代码中,我编写了将设置可见性的方法
public bool SetVisibility(object value)
{
if (Convert.ToBoolean(value))
return false;
else
return true;
}
public string SetTextBoxVisibility(object value, object condition)
{
if (Convert.ToBoolean(value))
return Convert.ToString(condition);
else
return "";
}