0

これは私のaspコードです:

<body>
     <form id="form1" runat="server">
<div>

    <asp:GridView ID="GridView1" runat="server">

    <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:TemplateField HeaderText="Id" InsertVisible="False">
                <EditItemTemplate> 
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id") %>'></asp:TextBox>
                </EditItemTemplate> 
                <ItemTemplate> 
                    <asp:Label ID="lblId" runat="server" Text='<%# Bind("id") %>'></asp:Label> 
                </ItemTemplate> 
            </asp:TemplateField> 

            <asp:TemplateField HeaderText="firstname">
                <EditItemTemplate> 
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("firstname") %>'></asp:TextBox>
                </EditItemTemplate> 
                <ItemTemplate> 
                    <asp:Label ID="lbl" runat="server" Text='<%# Bind("firstname") %>'></asp:Label> 
                </ItemTemplate> 
            </asp:TemplateField> 
            </Columns>
    </asp:GridView>

</div>
</form>

これは私のvbコードです:

Imports System.Data.SqlClient
Imports System.Data

Partial Class testt
    Inherits System.Web.UI.Page
    Public connectionString As String = ConfigurationManager.ConnectionStrings("TestConnectionString").ConnectionString
    Public cn As SqlConnection = New SqlConnection(connectionString)
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim ds As New DataSet
        Dim dt As New DataTable
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim command As SqlCommand = New SqlCommand("selecttest", cn)
        command.CommandType = CommandType.StoredProcedure
        Dim da As New SqlDataAdapter(command)
        da.Fill(ds, "testtt")
        dt = ds.Tables(0)
        GridView1.DataSource = dt
        If Not IsPostBack Then
            GridView1.DataBind()
        End If
        If cn.State = ConnectionState.Open Then
            cn.Close()
        End If
    End Sub
    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
        Dim strPersonID As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("TextBox1"), TextBox).Text
        Dim strLastName As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("TextBox2"), TextBox).Text
        Try
            Dim command As SqlCommand = New SqlCommand("updatetest", cn)
            command.CommandType = CommandType.StoredProcedure
            command.Parameters.AddWithValue("@pid", strPersonID)
            command.Parameters.AddWithValue("@pfirstname", strLastName)
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
            command.ExecuteNonQuery()
            MsgBox("1 row updated")
            If cn.State = ConnectionState.Open Then
                cn.Close()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Public Sub GridView1_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
        GridView1.EditIndex = e.NewEditIndex
        If Not IsPostBack Then
            GridView1.DataBind()
        End If
    End Sub
End Class

1- グリッド内の列が重複しています。つまり、選択したデータをストアド プロシージャから取得し、新しい列のテンプレート フィールドにバインドされたデータを取得しているため、2 つの列だけを取得するのではなく、同じデータを持つ 4 つの列を取得しています。どうすればこれを修正できますか?

2-rowupdating イベントにエラーはありません。すべて正常に動作していますが、データベースでデータが更新されていません。ストアド プロシージャは SQL で正常に動作していることに注意してください。前述の列の重複が原因である可能性があります。

何か助けて??

ありがとう !

4

0 に答える 0