Asp.Net在aTemplate字段中的gridview内设置下拉列表的可见性

时间:2011-05-30 12:39:49

标签: asp.net

我有一个带有模板字段的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的可见性设置下拉列表的可见性。 两行中的任何一个都必须每行显示,但不能同时显示。 可以帮助我。

提前致谢。

3 个答案:

答案 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 "";
}