【问题标题】:Using Eval in a GridView for a DropDownList Selected Value在 GridView 中为 DropDownList 选定值使用 Eval
【发布时间】:2012-06-19 00:48:34
【问题描述】:

现在,我有一个名为“PROCESS_FLAG”的数据库字段,其中包含文本值(A、I、E、C),我希望能够根据值更改下拉列表列的默认选定值PROCESS_FLAG,我不知道从这里去哪里。

这是我拥有的 GridView 的代码:

 <asp:BoundField DataField="REQUESTQTY" HeaderText="Request Quantity" 
                SortExpression="REQUESTQTY" />
            <asp:BoundField DataField="MOVEFROM" HeaderText="Move From" 
                SortExpression="MOVEFROM" />
            <asp:BoundField DataField="MOVETO" HeaderText="Move To" 
                SortExpression="MOVETO" />
            <asp:BoundField DataField="COMPLETEDBY" HeaderText="Completed By" 
                SortExpression="COMPLETEDBY" Visible="false"/>
            <asp:BoundField DataField="COMPLETION_DATE" HeaderText="Completion Date" 
                SortExpression="COMPLETION_DATE" />
            <asp:BoundField DataField="COMMENTS" HeaderText="Comments" 
                SortExpression="COMMENTS" Visible="false" />
            <asp:BoundField DataField="RESPONSETIME" HeaderText="Response Time" 
                SortExpression="RESPONSETIME" Visible="false" />
            <asp:BoundField DataField="PROCESS_FLAG" HeaderText="Process Flag"
                SortExpression="PROCESS_FLAG" />
            <asp:BoundField DataField="UNIQUEKEY" HeaderText="Unique Key"
                SortExpression="UNIQUEKEY" Visible="true" />

            <asp:TemplateField HeaderText="Send To...">
                <ItemTemplate>
                    <asp:DropDownList ID="StatusDD" runat="server" AutoPostBack="false" OnSelectedIndexChanged="StatusDD_SelectedIndexChanged">
                        <asp:ListItem Value="A">Active</asp:ListItem>
                        <asp:ListItem Value="C">Complete</asp:ListItem>
                        <asp:ListItem Value="I">In Process</asp:ListItem>
                        <asp:ListItem Value="E">Error</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>

我想根据 PROCESS_FLAG 的值设置下拉列表的默认选择值。

对此的任何帮助将不胜感激。我根本不是 Eval 功能的专家。

谢谢!

【问题讨论】:

    标签: c# asp.net oracle drop-down-menu eval


    【解决方案1】:

    在.aspx页面的gridview中添加一个OnRowDataBound属性:

         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="id" OnRowDataBound="GridViewRowEventHandler">
    

    然后,替换

    <asp:BoundField DataField="PROCESS_FLAG" HeaderText="Process Flag"
                SortExpression="PROCESS_FLAG" />
    

         <asp:TemplateField>
         <ItemTemplate>             
         <asp:Label ID="process_Flags" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PROCESS_FLAG").ToString()%>'/>
          </ItemTemplate>                    
          </asp:TemplateField>
    

    然后在你的代码后面,做这样的事情:

     protected void GridViewRowEventHandler(Object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
               Label flag = (Label)e.Row.FindControl("process_Flags");
               DropDownList ddl = (DropDownList)e.Row.FindControl("StatusDD");
                if (flag.Text == "A")
                {
                    ddl.SelectedValue = "A";
                }
            //add more conditions here..
    
            }          
        }
    

    这应该让你更进一步:)

    【讨论】:

    • 编译器说我没有对“e.Row”的引用。我为此缺少什么指令?
    • protected void GridViewRowEventHandler(Object sender, GridViewRowEventArgs e) 你做了这个方法吗?如果你把代码放在那里,你应该可以访问 e.Row
    • 是的,对不起,这个错误只是我的一个错字。就是说 StatusDD 现在在当前上下文中不存在。
    • 太棒了,非常感谢。我会试试这个并发布我的发现。 :)
    • 是的,我不知道您如何命名您的属性等,但我的回答应该会引导您朝着正确的方向前进。如果您有任何问题,请告诉我
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多