大家好!我有一个GridView控件,需要自定义删除的sql语句为一个名为DeleteUser的存储过程,该过程通过获取OnRowDeleting事件中传入的e.RowIndex的UserId字段的值来确定删除的行,该UserId字段是一个uniqueidentifier属性的字段
sqlDataSource数据源的代码如下:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:sper_lvyouConnectionString1 %>"
SelectCommand="
SELECT a.UserId,a.UserName, b.Password, b.Email, b.PasswordQuestion,b.PasswordAnswer, b.CreateDate
FROM dbo.aspnet_Users as a INNER JOIN
dbo.aspnet_Membership as b ON b.UserId = a.UserId
ORDER By
b.CreateDate desc" DeleteCommand="DeleteUser" OnDeleting="SqlDataSource1OnDeleting" DeleteCommandType="StoredProcedure">
<%--
</asp:SqlDataSource>
code=C#]
protected void GridView1OnRowDeleting(Object sender,GridViewDeleteEventArgs e)
{
ViewState["UserId"] = GridView1.Rows[e.RowIndex].Cells[0];
}
protected void SqlDataSource1OnDeleting(Object sender,SqlDataSourceCommandEventArgs e)
{
SqlParameter deleteKey = new SqlParameter("@UserId", SqlDbType.UniqueIdentifier);
// deleteKey.Value = (Guid)ViewState["UserId"];
e.Command.Parameters.Add(deleteKey);
// e.Command.Parameters["@UserId"].Value = ViewState["UserId"].ToString();
}[[/code]存储过程:
CREATE PROCEDURE [dbo].[DeleteUser]
@UserId uniqueidentifier
AS
BEGIN
Delete From dbo.aspnet_Membership Where [UserId]=@UserId
Delete From dbo.aspnet_Users Where [UserId]=@UserId
END
GO哪位高人对我所说的情况比较清楚,忘指点一二,客户逼着要交货,着急ing
sqlDataSource数据源的代码如下:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:sper_lvyouConnectionString1 %>"
SelectCommand="
SELECT a.UserId,a.UserName, b.Password, b.Email, b.PasswordQuestion,b.PasswordAnswer, b.CreateDate
FROM dbo.aspnet_Users as a INNER JOIN
dbo.aspnet_Membership as b ON b.UserId = a.UserId
ORDER By
b.CreateDate desc" DeleteCommand="DeleteUser" OnDeleting="SqlDataSource1OnDeleting" DeleteCommandType="StoredProcedure">
<%--
</asp:SqlDataSource>
code=C#]
protected void GridView1OnRowDeleting(Object sender,GridViewDeleteEventArgs e)
{
ViewState["UserId"] = GridView1.Rows[e.RowIndex].Cells[0];
}
protected void SqlDataSource1OnDeleting(Object sender,SqlDataSourceCommandEventArgs e)
{
SqlParameter deleteKey = new SqlParameter("@UserId", SqlDbType.UniqueIdentifier);
// deleteKey.Value = (Guid)ViewState["UserId"];
e.Command.Parameters.Add(deleteKey);
// e.Command.Parameters["@UserId"].Value = ViewState["UserId"].ToString();
}[[/code]存储过程:
CREATE PROCEDURE [dbo].[DeleteUser]
@UserId uniqueidentifier
AS
BEGIN
Delete From dbo.aspnet_Membership Where [UserId]=@UserId
Delete From dbo.aspnet_Users Where [UserId]=@UserId
END
GO哪位高人对我所说的情况比较清楚,忘指点一二,客户逼着要交货,着急ing
{
deleteKey.Value = (Guid)ViewState["UserId"];
}
ViewState["UserId"] = GridView1.Rows[e.RowIndex].Cells[0].ToString()只能保留文本无法将其抓换为Guid对象
你的这句话问题。
ViewState["UserId"]里面存放的是cells对象。
我这样写:
ViewState["UserId"] = (Guid)GridView1.Rows[e.RowIndex].Cells[0];出错
无法将类型“System.Web.UI.WebControls.TableCell”转换为“System.Guid”
该怎么办啊?求救啊!
protected void GridView1OnRowDeleting(Object sender,GridViewDeleteEventArgs e)
{
ViewState["UserId"] = GridView1.Rows[e.RowIndex].Cells[0].ToString();
}
protected void SqlDataSource1OnDeleting(Object sender,SqlDataSourceCommandEventArgs e)
{
SqlParameter deleteKey = new SqlParameter("@UserId", SqlDbType.UniqueIdentifier);
deleteKey.Value = new Guid(ViewState["UserId"].ToString());
e.Command.Parameters.Add(deleteKey);
}
结果还是不行啊:
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
我的GridView是这样的: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True"
AutoGenerateDeleteButton="true" OnRowDeleting="GridView1OnRowDeleting">
<Columns>
<asp:BoundField DataField="UserId" HeaderText="UserId"
SortExpression="UserId" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Password" HeaderText="Password"
SortExpression="Password" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
<asp:BoundField DataField="PasswordQuestion" HeaderText="PasswordQuestion"
SortExpression="PasswordQuestion" />
<asp:BoundField DataField="PasswordAnswer" HeaderText="PasswordAnswer"
SortExpression="PasswordAnswer" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" />
</Columns>
</asp:GridView>