asp.net 使用DropDownList和TextBox控件更新GridView行时出现问题

piv4azn7  于 2023-08-08  发布在  .NET
关注(0)|答案(3)|浏览(122)

尝试使用DropDownList和TextBox控件更新GridView控件中的行时遇到错误。GridView包含一个TemplateField和一个DropDownList控件(用于“Status”列),以及一个EditItemTemplate和一个TextBox控件(用于其他列)。DropDownList中填充了状态选项,当我尝试更新行时,收到以下错误消息:
“System.Data.SqlClient.SqlException:无法将值NULL插入到表“Karlo_Miskovic.dbo. Narudžba”的列“ID status”中;列不允许空值。更新失败。”
我已经检查了我的代码,并确保DropDownList控件具有选定的值,TextBox控件具有适当的值。但是,错误仍然存在。我将感谢任何关于解决这个问题的见解或建议。
下面是相关的代码片段:.asxp:

<asp:TemplateField HeaderText="Status" SortExpression="Status">
    <EditItemTemplate>
        <asp:DropDownList ID="ddlStatus" runat="server" SelectedValue='<%# Bind("[Status]") %>'>
            <asp:ListItem Text="Neobrađeno" Value="Neobrađeno"></asp:ListItem>
            <asp:ListItem Text="U obradi" Value="U obradi"></asp:ListItem>
            <asp:ListItem Text="Završeno" Value="Završeno"></asp:ListItem>
        </asp:DropDownList>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="lblStatus" runat="server" Text='<%# Bind("[Status]") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

字符串
.vb:

Protected Sub GridView1_RowUpdating(sender As Object, e As GridViewUpdateEventArgs)
    ' Retrieve the new values entered by the user
    Dim orderID As Integer = Integer.Parse(GridView1.DataKeys(e.RowIndex).Value.ToString())
    Dim deliveryDate As Date = Date.Parse(CType(GridView1.Rows(e.RowIndex).FindControl("txtDatumIsporuke"), TextBox).Text)
    Dim status As String = CType(GridView1.Rows(e.RowIndex).FindControl("ddlStatus"), DropDownList).SelectedValue
    ' Other variable assignments...

    ' Rest of the code...

End Sub


我还确保数据库列“ID statusa”未设置为允许空值。尽管采取了这些措施,错误仍然存在。如能协助解决此问题,将不胜感激。

xxb16uws

xxb16uws1#

添加此代码并重试

if (!IsPostBack)
            {
               //bind your gridview
                BindGridView1();
            }

字符串
在VB中

If Not IsPostBack Then
    'bind your gridview
    BindGridView1()
End If

ccrfmcuu

ccrfmcuu2#

根据项目设置,还可以使用

Dim ddlStatus As DropDownList = 
   GridView1.Rows(e.RowIndex).FindControl("ddlStatus")

ddlStatus.SelectedItem.Value -- gets value
ddlStatus.SelectedItem.Text -- gets text

字符串

ltqd579y

ltqd579y3#

我做了这个,它工作。而不是:

Dim status As String = CType(GridView1.Rows(e.RowIndex).FindControl("ddlStatus"), DropDownList).SelectedValue

字符串
我这样做了:

Dim ddlStatus As DropDownList = CType(GridView1.Rows(e.RowIndex).FindControl("ddlStatus"), DropDownList)
ddlStatus.SelectedValue

相关问题