来自ASP的数据:DropDownList不会更新到数据库

时间:2012-12-13 17:10:48

标签: asp.net vb.net html-select

我们正在尝试使用ASP:DropDownList中的值从ASP.Net DetailsView将数据更新到数据库,但是当用户单击“更新”按钮时,没有任何反应。只有取消按钮才有效。

DropDownList将显示加载到其中的数据库中的数据,但我们无法进行更新。

我假设我遗漏了标记编码中的内容。

这是DropDownList的标记:

<asp:TemplateField HeaderText="Class:" SortExpression="ClassID">

    <EditItemTemplate>
        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            AutoPostBack="True" 
            AppendDataBoundItems="true">
        </asp:DropDownList>

        <asp:RequiredFieldValidator ID="RequiredFieldValidatorEditDropDownListClass" runat="server" 
            ControlToValidate="DropDownListClass" 
            ErrorMessage="Please select a class." Font-Bold="True" Font-Italic="True" ForeColor="Red" 
            SetFocusOnError="True" Display="Dynamic">
        </asp:RequiredFieldValidator>
    </EditItemTemplate>

    <ItemTemplate>
        <asp:Literal ID="LiteralClass" runat="server" 
            Text='<%# FormatAsMixedCase(Eval("ClassName").ToString())%>' />
    </ItemTemplate>

    <ItemStyle ForeColor="Blue" />
</asp:TemplateField>

这是DataSource的标记,它是一个简单的查找表:

<asp:SqlDataSource 
    ID="SqlDataSourceClasses" 
    runat="server" 

    ConnectionString="<%$ ConnectionStrings:Islamic Knowledge Academy Staff System %>" 

    SelectCommand="SELECT [ID], [ClassName], [Grade] FROM [Classes]">
</asp:SqlDataSource>

1 个答案:

答案 0 :(得分:1)

伊马德-UD-DEN,

我认为你的提交按钮需要一个点击处理程序,以便当客户端回发到服务器时 - 它知道更新数据库。有点像:

Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpdate.Click

    Dim cnAD As New System.Data.SqlClient.SqlConnection = yourdatasource.getConnection("SqlDataSourceClasses", cnAD)
    Dim cmd As New SqlCommand
    cmd.Connection = cnAd
    cmd.CommandType.Text
    cmd.CommandText = "update yourtable set yourval=@val where yourparams"
    cmd.Paramaters.AddWithValue("@val", DropDownListClass.SelectedValue)
    cmd.ExecuteNonQuery()

End Sub

你甚至可以添加一个try-catch来更好地了解你的代码出错的地方。请注意,我所写的内容不会按原样运作,但它旨在为您指明正确的方向。