リストビュー コントロールのデータ行を編集するためにストアド プロシージャを使用しています。各行には「編集」と「削除」リンクがあり、ユーザーが「編集」をクリックすると行が編集可能になります。私が得ているエラーは、ユーザーが「編集」をクリックすると、行が編集可能にならないということです。
使用されるストアド プロシージャは次のとおりです。
CREATE PROCEDURE [dbo].[RegisterUpdate]
-- Add the parameters for the stored procedure here
@id int,
@fname nvarchar(50),
@lname nvarchar(50),
@company nvarchar(50),
@email nvarchar(250)
AS BEGIN -- 余分な結果セットを防ぐために追加された SET NOCOUNT ON -- SELECT ステートメントに干渉します。NOCOUNT をオンに設定します。
-- Update statements for procedure here
Update dbo.register
SET fname = @fname,
lname = @lname,
company=@company,
email=@email
WHERE dbo.register.id=@id
END
行く
Asp.net コードは次のとおりです。
<EditItemTemplate>
<tr style="background-color: #E0FFFF; color: #333333;">
<td>
<asp:TextBox ID="fname" runat="server" Text='<%# Eval("fname") %>'>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="lname" runat="server" Text='<%# Eval("lname") %>'>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="company" runat="server" Text='<%# Eval("company") %>'>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="email" runat="server" Text='<%# Eval("email") %>'>'></asp:TextBox>
</td>
<td>
<asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Save" />
</td>
<td>
<asp:LinkButton ID="lnkCancel" runat="server" Text="Cancel" CommandName="Cancel" />
</td>
</tr>
</EditItemTemplate>
データセットにデータを保存するために使用される C# コードは次のとおりです。
protected void ListViewDetails_ItemEditing(object sender, System.Web.UI.WebControls.ListViewEditEventArgs e)
{
con.Open();
SqlCommand cmd = new SqlCommand("dbo.RegisterUpdate", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@fname", con);
cmd.Parameters.AddWithValue("@lname", con);
cmd.Parameters.AddWithValue("@company", con);
cmd.Parameters.AddWithValue("@email", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
}