0

我有一个 GridView,里面有记录。当您选择其中一条记录时,它会更新详细信息视图,以便您进行更改。我将它们设置为模板。我从 SQL 中提取的字段之一是数字 1-4(A 优先级)。我想要它,以便当您在 gridview 中选择记录时,它会在 Detailsview 中显示数据。现在,截至目前,它显示了数字。但我写了另一种方法将数字转换为文本(switch 语句)以显示数字的含义。这个页面被写成一个 ASCX 文件,仅供参考。我需要知道我需要在后端使用什么代码来制作它,以便我的方法可以将 Label6 的数字切换为文本。

我省略了一些代码以节省时间。

    <asp:DetailsView ID="dvRequestDetails" runat="server" AutoGenerateRows="False" CellPadding="4"
                            DataKeyNames="casenumber" DataSourceID="RequestDetails" Font-Names="Arial" Font-Size="Small"
                            ForeColor="#333333" GridLines="None" Height="50px" Width="300px" 
                            EnableModelValidation="True" 
                            onpageindexchanging="dvRequestDetails_PageIndexChanging">
                            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            <CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
                            <EditRowStyle BackColor="WhiteSmoke" />
                            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" VerticalAlign="Top" />
                            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                            <Fields>    
    <asp:TemplateField HeaderText="Priority" SortExpression="other">
                                    <EditItemTemplate>
                                        <asp:DropDownList ID="ddlDetailsOther" runat="server" AutoPostBack="True" 
                                            SelectedValue='<%# Bind("other") %>' OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                                            <asp:ListItem Value="4" Selected="True">General</asp:ListItem>
                                            <asp:ListItem Value="3">Low Priority</asp:ListItem>
                                            <asp:ListItem Value="2">High Priority</asp:ListItem>
                                            <asp:ListItem Value="1">Critical</asp:ListItem>
                                        </asp:DropDownList>
                                    </EditItemTemplate>
                                    <InsertItemTemplate>
                                        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("other") %>'></asp:TextBox>
                                    </InsertItemTemplate>
                                    <ItemTemplate>
                                        <asp:Label ID="Label6" runat="server" Text='<%# Bind("other") %>' OnDataBound="dvRequestDetails_DataBound"></asp:Label>
                                    </ItemTemplate>
                                </asp:TemplateField>
</Fields>
                        <FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" VerticalAlign="Top" />
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    </asp:DetailsView>
4

1 回答 1

0

您可以很容易地从 aspx 页面调用代码中的方法。

带有将优先级转换为字符串的方法的代码后面(我假设它是一个 int)

public partial class DemoPage : System.Web.UI.Page
{
    protected string GetPriorityName(object priority)
    {
        switch ((int)priority)
        {
            case 1:
                return "Critical";
            case 2:
                return "High Priority";
            case 3:
                return "Low Priority";
            case 4:
                return "General";
            default:
                return "Unknown";
        }
    }
}

然后在 aspx 中调用这个方法传入你的值

<asp:DetailsView ID="dvRequestDetails" runat="server">
    <Fields>    
        <asp:TemplateField HeaderText="Priority" SortExpression="other">
            <EditItemTemplate>
                <asp:DropDownList ID="ddlDetailsOther" runat="server" AutoPostBack="True" 
                    SelectedValue='<%# Bind("other") %>' OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Value="4" Selected="True">General</asp:ListItem>
                    <asp:ListItem Value="3">Low Priority</asp:ListItem>
                    <asp:ListItem Value="2">High Priority</asp:ListItem>
                    <asp:ListItem Value="1">Critical</asp:ListItem>
                </asp:DropDownList>
            </EditItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="TextBox6" runat="server" Text='<%# GetPriorityName(Bind("other")) %>'></asp:TextBox>
            </InsertItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label6" runat="server" Text='<%# GetPriorityName(Bind("other")) %>' OnDataBound="dvRequestDetails_DataBound"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Fields>
</asp:DetailsView>

看到您现在有两次优先级列表(一次在 aspx 中,一次在后面的代码中),您最好将其设为列表并将下拉列表绑定到该列表并从中读取名称 -如果您决定更改名称/添加另一个优先级,它只需要在一个地方完成。

于 2013-11-07T01:36:46.063 回答