簡體   English   中英

從“ DBNull”類型到“ Integer”類型的轉換無效。 使用asp.net和對象數據源

[英]Conversion from type 'DBNull' to type 'Integer' is not valid. using asp.net and object data source

我嘗試使用objectdatasource(odsGvTeam)在gridview中編輯稱為(gvTeam)gridview的行

在Admin_team.aspx中

      <asp:GridView ID="gvTeam" runat="server" AutoGenerateColumns="False" DataKeyNames="team_id" DataSourceID="odsGvTeam" AllowPaging="True">
                <Columns>
                 <asp:BoundField DataField="team_id" HeaderText="team_id" InsertVisible="False" ReadOnly="True" SortExpression="team_id" Visible="False" />
                    <asp:BoundField DataField="team_name" HeaderText="key_team_name" SortExpression="team_name" />
                    <asp:BoundField DataField="team_lang" HeaderText="key_team_lang" SortExpression="team_lang" />
                    <asp:BoundField DataField="team_status" HeaderText="key_status" SortExpression="team_status" />
                    <asp:BoundField DataField="team_key" HeaderText="key_team_key" SortExpression="team_key" />
                    <asp:BoundField DataField="team_rating" HeaderText="key_team_rating" SortExpression="team_rating" />

                     <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="lnkEditTeam" runat="server" CausesValidation="false" CommandName="edit_team" Text="Edit" CommandArgument='<%# Bind("team_id") %>'></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                 <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton ID="lnkDeleteTeam" runat="server" CausesValidation="false" OnClientClick="return confirm('Are you sure?');" CommandName="delete_team" Text="Delete" CommandArgument='<%# Bind("team_id") %>'></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:ObjectDataSource ID="odsGvTeam" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="CMS_NG_Sql_V1.dsTeamTableAdapters.taTeam" UpdateMethod="Update">
                <DeleteParameters>
                    <asp:Parameter Name="original_team_id" Type="Int32" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="team_name" Type="String" />
                    <asp:Parameter Name="team_lang" Type="String" />
                    <asp:Parameter Name="team_status" Type="Int32" />
                    <asp:Parameter Name="team_key" Type="String" />
                    <asp:Parameter Name="team_rating" Type="Int32" />
                </InsertParameters>
                <SelectParameters>
                    <asp:Parameter DefaultValue="en" Name="team_lang" Type="String" />
                </SelectParameters>
                <UpdateParameters>
                    <asp:Parameter Name="team_name" Type="String" />
                    <asp:Parameter Name="team_lang" Type="String" />
                    <asp:Parameter Name="team_status" Type="Int32" />
                    <asp:Parameter Name="team_key" Type="String" />
                    <asp:Parameter Name="team_rating" Type="Int32" />
                    <asp:Parameter Name="team_id" Type="Int32" />
                </UpdateParameters>
            </asp:ObjectDataSource>

CodeBehing

Protected Sub gvTeam_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gvTeam.RowCommand

    Select Case e.CommandName.ToLower

        Case "edit_team"
            txtID.Value = e.CommandArgument
            Using objTeam As New cls_Team(CInt(txtID.Value))


                txtID.Value = objTeam.TeamDataRow.team_id
                txtLang.Text = objTeam.TeamDataRow.team_lang
                txtRating.Text = objTeam.TeamDataRow.team_rating
                txtTeamKey.Text = objTeam.TeamDataRow.team_key
                optStatus.SelectedValue = objTeam.TeamDataRow.team_status
                txtName.Text = objTeam.TeamDataRow.team_name
                MultiView1.SetActiveView(viwEditTeam)

            End Using
            AdminLogFile(CMS_NG_Sql_V1.enum_AdminLogFile.Edit)

        Case "delete_team"
            Dim intID As Integer = e.CommandArgument
            'Response.Redirect("admin_team.aspx?IDTeam=" & intID)
            Using objTeam As New cls_Team(intID)

                objTeam.Delete(intID)


                AdminLogFile(CMS_NG_Sql_V1.enum_AdminLogFile.Delete)
                gvTeam.DataBind()
            End Using

    End Select
End Sub

Case“ delete_team”工作正常

但案例“ edit_team”不起作用,我得到了錯誤:

在此處輸入圖片說明

我也使用了名為(dsTeam.xsd)的數據集

如何解決IT問題?

team_rating列中的值為NULL 與VB中的字符串變量不同的數據庫NULL可能具有空值。 您需要在為txtRating.Text分配值之前進行檢查:

If Not objTeam.TeamDataRow.IsNull("team_rating") Then
    txtRating.Text = objTeam.TeamDataRow.team_rating
End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM