0

単純なgridviewとsqldatasourceを使用して、データをgridviewにバインドします。SqlDatabase列に一意の制約を設定しようとしているため、新しい行を追加するか、行を更新しても、値が既に存在する場合は更新されません。

列名には、->インデックス/キー->新規->選択した列名->一意キーを設定します。

ラベルにすでに存在すると表示されている場合、どうすればエラーを取得できますか?

ありがとう

4

1 に答える 1

0

最初に次のようにプロシージャを作成します。

Create PROCEDURE [dbo].[test]
( 
@myUniquecolumn as varchar(20),
@ID    as int
)
AS
DECLARE @ReturnValue int
IF EXISTS (SELECT myUniquecolumn FROM mytable WHERE myUniquecolumn=@myUniquecolumn)
BEGIN
-- if the value already exist return 1
SELECT @ReturnValue = 1;
RETURN @ReturnValue;
END
ELSE
BEGIN
update mytable set myUniquecolumn=@myUniquecolumn where ID=@ID
SELECT @ReturnValue = 0;
RETURN @ReturnValue;
END

次に、更新のために ur sqldatasource でこの手順を使用します。出力パラメーターを SQL データ ソースに追加する方法については、このチュートリアルに従ってください。

aspx sqldatasource の後は次のようになります。

    <UpdateParameters>
        <asp:Parameter Name="myUniquecolumn" Type="String" />
        <asp:Parameter Name="ID" Type="Int32" />
        <asp:Parameter DbType="Int32" Direction="ReturnValue" Name="uniqtest" />
    </UpdateParameters>

次に、コード ビハインド ファイルに次のコードを書き込みます。

protected void SqlDataSource1_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
    int uniquecolumn= (int)e.Command.Parameters["@uniqtest"].Value;

  if (uniquecolumn == 0)
    {
        Label1.Text = "Success";
    }
    else
    {
        Label1.Text = "fail";
    }
  }

それが役に立てば幸い.... :)

于 2012-05-03T22:51:10.613 に答える