首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DetailsView DropDownList没有更新

DetailsView DropDownList没有更新
EN

Stack Overflow用户
提问于 2013-11-04 20:00:52
回答 1查看 1.2K关注 0票数 0

我是ASP.net的新手,所以我现在才开始使用TemplateFields。我有一个DetailsView,它包含一个DropDownList,当DetailsView在EditMode中时,它的项是从我的代码背后填充的。

这么多都很好用。但是,在从我的DropDownList中选择一项并单击“更新”之后,所选内容不会被更新,但是其他的DetailsView表单值是。

这是我的代码:

DetailsView和SQL查询:

代码语言:javascript
复制
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="315px"
    AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="SqlDataSource1"
    OnDataBound="DetailsView1_DataBound">
    <Fields>
        <asp:CommandField ShowEditButton="True" ControlStyle-CssClass="button" >
            <ControlStyle CssClass="button"></ControlStyle>
        </asp:CommandField>
        <asp:BoundField DataField="FirstName" HeaderText="First Name"
            SortExpression="FirstName" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name"
            SortExpression="LastName" />
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
        <asp:BoundField DataField="JobID" HeaderText="JobID" SortExpression="JobID" />
        <asp:BoundField DataField="SupervisorID" HeaderText="Supervisor"
            SortExpression="SupervisorID" />
        <asp:TemplateField HeaderText="Hire Date" SortExpression="HireDate">
            <EditItemTemplate>
                <span class="input-type-text margin-right relative"><asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("HireDate","{0:d}") %>' CssClass="datepicker"></asp:TextBox><img src="images/icons/fugue/calendar-month.png" width="16" height="16"></span>
            </EditItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("HireDate","{0:d}") %>'></asp:TextBox>
            </InsertItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("HireDate","{0:d}") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Status" SortExpression="Status">
            <EditItemTemplate>
                <asp:DropDownList ID="StatusList"  runat="server">

                </asp:DropDownList>
            </EditItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Status") %>'></asp:TextBox>
            </InsertItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

    </Fields>
</asp:DetailsView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
    DeleteCommand="DELETE FROM [Users] WHERE [ID] = @ID"
    InsertCommand="INSERT INTO [Users] ([ClientID], [UserName], [Password], [FirstName], [LastName], [Email], [JobID], [SupervisorID], [HireDate], [Status]) VALUES (@ClientID, @UserName, @Password, @FirstName, @LastName, @Email, @JobID, @SupervisorID, @HireDate, @Status)"
    ProviderName="<%$ ConnectionStrings:dbConnectionString.ProviderName %>"
    SelectCommand="SELECT [ID], [ClientID], [UserName], [Password], [FirstName], [LastName], [Email], [JobID], [SupervisorID], [HireDate], [Status] FROM [Users] WHERE [ID] = @ID"
    UpdateCommand="UPDATE [Users] SET [ClientID] = @ClientID, [UserName] = @UserName, [Password] = @Password, [FirstName] = @FirstName, [LastName] = @LastName, [Email] = @Email, [JobID] = @JobID, [SupervisorID] = @SupervisorID, [HireDate] = @HireDate, [Status] = @StatusList WHERE [ID] = @ID">
    <SelectParameters>
        <asp:QueryStringParameter Name="ID" QueryStringField="curEmp" Type="Int64" />
    </SelectParameters>

    <UpdateParameters>
        <asp:Parameter Name="ClientID" Type="Int64" />
        <asp:Parameter Name="UserName" Type="String" />
        <asp:Parameter Name="Password" Type="String" />
        <asp:Parameter Name="FirstName" Type="String" />
        <asp:Parameter Name="LastName" Type="String" />
        <asp:Parameter Name="Email" Type="String" />
        <asp:Parameter Name="JobID" Type="Double" />
        <asp:Parameter Name="SupervisorID" Type="Double" />
        <asp:Parameter Name="HireDate" Type="DateTime" />
        <asp:Parameter Name="StatusList" Type="String" />
        <asp:Parameter Name="ID" />
    </UpdateParameters>
</asp:SqlDataSource>

代码背后:

代码语言:javascript
复制
protected void DetailsView1_DataBound(object sender, EventArgs e)
    {


        if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
        {

            DropDownList statusList = DetailsView1.FindControl("StatusList") as DropDownList;

            //Add list items (later to be added by database)

            if (statusList != null)
            {
                statusList.Items.Add(new ListItem("Select Status", ""));
                statusList.Items.Add(new ListItem("Active", "Active"));
                statusList.Items.Add(new ListItem("Inactive", "Inactive"));
                statusList.Items.Add(new ListItem("Terminated", "Terminated"));
                statusList.DataBind();
            }


            //Highlight selected item in dropdownlist while in edit mode

            DataRowView row = (DataRowView)DetailsView1.DataItem;
            ListItem liItem = statusList.Items.FindByText(row["Status"].ToString());
            if (liItem != null)
              {
                  statusList.Items.FindByText(row["Status"].ToString()).Selected = true;
              }

        }

    }

我不知道从这里往哪里走。我试图更改我的SQLDataSource中的DropDownList更新命令(名为StatusList),但没有取得任何成功。知道我在这里错过了什么吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 20:14:56

我不认为statusList绑定到您的数据源。您需要在aspx或数据源中绑定下拉列表。

就像aspx里的这个..。

代码语言:javascript
复制
<asp:DropDownList ID="statusList" runat="server" SelectedValue='<%# Bind("datafield") %>'>

或者在数据源参数中。

代码语言:javascript
复制
<asp:ControlParameter Name="status" ControlID="DetailsView1$statusDropDownList" PropertyName="SelectedValue" Type="String" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19776037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档