我正在使用存储过程来编辑列表视图控件中的数据行。每行都有“编辑”和“删除”链接,因此当用户单击“编辑”时,该行应该可以编辑。我得到的错误是当用户点击“编辑”时,行不会变得可编辑。
使用的存储过程是:
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 语句。设置无计数;
-- 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;
}