簡體   English   中英

在asp.net中禁用dropdownlist

[英]dropdownlist disable in asp.net

當管理員再次批准/拒絕任何文檔,然后再次登錄時,他/她將無法再次批准/拒絕文檔,下拉列表僅針對那些可以一次批准/拒絕的文檔禁用,然后當管理員查看任何新文檔時將啟用下拉菜單,當管理員批准/拒絕此文檔時,將禁用下拉列表,因為不再批准/拒絕

為此,我這樣做

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Find the DropDownList in the Row

        DropDownList abc = (e.Row.FindControl("DropDownList9") as DropDownList);
        abc.Enabled = false;
    }
}

但是這段代碼告訴我所有dropdownlist都被禁用。

任何解決方案,我將如何做到這一點?

您需要從每一行訪問數據項,我假設它在綁定到網格的對象上可用,並確定它們是否已被批准/拒絕。 如果是這樣,那么您應該運行邏輯來禁用:

        protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                var yo = (YOUR-OBJECT)e.Row.DataItem;

                if(yo.Status !== null OR yo.Status != 'Not Reviewed'){
                //Find the DropDownList in the Row
                DropDownList abc = (e.Row.FindControl("DropDownList9") 
                as  DropDownList);
                abc.Enabled = false;

                }

            }

        }

根據您的評論,我假設您的數據源是DataTable或DataSet。

如果是這樣,則想將DataItem強制轉換RowDataBound事件內的DataRowView,以獲取狀態列的值。

在此處輸入圖片說明

<asp:GridView ID="GridView1" runat="server"
    AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" />
        <asp:TemplateField HeaderText="Status">
            <ItemTemplate>
                <asp:DropDownList runat="server" ID="DropDownList9">
                    <asp:ListItem Text="Approve" Value="1" />
                    <asp:ListItem Text="Reject" Value="2" />
                    <asp:ListItem Text="Pending" selected="selected" Value="3">
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var table = new DataTable();
        table.Columns.Add("Id", typeof (int));
        table.Columns.Add("Name", typeof (string));
        table.Columns.Add("ApproveID", typeof(string));

        table.Rows.Add(1, "Jon Doe", "1");
        table.Rows.Add(2, "Eric Newton", "2");
        table.Rows.Add(3, "Marry Doe", "3");

        GridView1.DataSource = table;
        GridView1.DataBind();
    }
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var item = e.Row.DataItem as DataRowView;

        var dropDownList = e.Row.FindControl("DropDownList9") as DropDownList;

        // Get value from ApproveID column, 
        // and check whehter Approve, Reject or others.
        switch (item["ApproveID"].ToString())
        {
            case "1":
            case "2":
                dropDownList.Enabled = false;
                break;
            default:
                dropDownList.Enabled = true;
                break;
        }
    }
}

您可以使用以下代碼詢問您位於哪一行:

if (e.Row.RowIndex == <aRowNumber>)
{
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM