1

リストビュー コントロールのデータ行を編集するためにストアド プロシージャを使用しています。各行には「編集」と「削除」リンクがあり、ユーザーが「編集」をクリックすると行が編集可能になります。私が得ているエラーは、ユーザーが「編集」をクリックすると、行が編集可能にならないということです。

使用されるストアド プロシージャは次のとおりです。

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;
        }
4

3 に答える 3

1

これを試してみましょう。

protected void AdminUserControl_ItemEditing(object sender, ListViewEditEventArgs e)
    {
        AdminUserControl.EditIndex = e.NewEditIndex;
        UserBLL userbll = new UserBLL();
        AdminUserControl.DataSource = userbll.GetAllUsers();
        AdminUserControl.DataBind();

    }
    protected void AdminUserControl_ItemUpdating(object sender, ListViewUpdateEventArgs e)
    {
        UserBLL userbll = new UserBLL();

        TextBox fname= (TextBox)e.NewValues["fname"];
        TextBox lname= (TextBox)e.NewValues["lname"];
        TextBox company= (TextBox)e.NewValues["company"];
        TextBox email= (TextBox)e.NewValues["email"];

        user = new User();
        user.fname= Convert.ToInt16(fname.Text);
        user.lname= lname.Text;
        user.company= company.Text;
        user.email= email.Text;

        admin.UpdateUsers(user);
    }

グリッドビューを使用している場合は、

于 2013-08-19T07:44:46.357 に答える
1

ItemUpdating メソッドで値をバインドする必要があります。ItemUpdating のリストビューでハンドラーをアタッチします。

update コマンドが起動されたら、コードを使用する必要があります。

protected void ListViewDetails_ItemUpdating(object sender, ListViewUpdateEventArgs e)
        {
            TextBox fname = (TextBox)e.NewValues["fname"];
            TextBox lname = (TextBox)e.NewValues["lname"];
            TextBox company = (TextBox)e.NewValues["company"];
            TextBox email = (TextBox)e.NewValues["email"];


            con.Open();
            SqlCommand cmd = new SqlCommand("dbo.RegisterUpdate", con);
            cmd.CommandType = CommandType.StoredProcedure;



            cmd.Parameters.AddWithValue("@fname", Convert.ToInt16(fname.Text));
            cmd.Parameters.AddWithValue("@lname", lname.Text);
            cmd.Parameters.AddWithValue("@company", company.Text);
            cmd.Parameters.AddWithValue("@email", email.Text);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            cmd.ExecuteNonQuery();
        }

お役に立てれば

于 2013-08-19T07:52:39.260 に答える