これは私の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 で正常に動作していることに注意してください。前述の列の重複が原因である可能性があります。
何か助けて??
ありがとう !