1

GridViewコントロールがあり、編集を有効にしました。

私の編集ボタンと更新ボタンは、次のように両方ともLinkBut​​tonです。

<asp:LinkButton ID="buttonEdit" runat="server" Text="Edit" CausesValidation="false"
                            CommandName="Edit" />

<asp:LinkButton ID="buttonUpdate" runat="server" CausesValidation="True"
                            CommandName="Update" Text="Update" ValidationGroup="Edit" />

ユーザーが編集ボタンをクリックすると、列の1つに、レコードを編集できるテキストボックスが表示されます。

<EditItemTemplate>
    <asp:TextBox ID="textBoxEdit" runat="server" Text='<%#Eval("Name") %>' />
    <asp:Label ID="labelEditWarning" CssClass="error" runat="server" Text="Name already exists" Visible="false" />
</EditItemTemplate>

ユーザーが[更新]リンクボタンをクリックすると、グリッドのRowCommandイベントが発生します。ここで、データベース内の既存のレコードに対して検証を実行したいと思います。検証が失敗した場合、グリッドのRowUpdatingイベントの発生を停止する方法はありますが、これを行う方法はないようです!?

protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("Edit"))
    {
        //Perform validation & cancel update if the validation fails.
    }
}

protected void gridName_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
     //Update my record. But I don't want this to fire if my validation fails in 
     //the row command event.
}

誰か助けてもらえますか?

ASP.Net4.0を使用しています

前もって感謝します。

4

3 に答える 3

1

'buttonUpdate'のCommandNameを'Update'から'rename'のようなものに変更します。これにより、RowUpdatingイベントの発生が停止します。次に、RowCommandイベントにコードを追加して、レコードの検証と更新を処理できます。

protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("rename"))
    {
        if(validation == true)
        {
          DatabaseDataContext data = new DatabaseDataContext();

          string rowID = e.CommandArguement.ToString();
          var rowToUpdate = data.TableOne.Where(d => d.ID.ToString() == rowID);
          rowToUpdate.Name = newName;

          data.SubmitChanges();
        }
        else
        {
          //Set error label
        }
    }
}

また、ボタンのCommandArguementを次のように変更する必要があります。

<asp:LinkButton ID="buttonUpdate" runat="server" CausesValidation="True"
                        CommandName="Update" CommandArguement='<%# Eval("ID") %>' Text="Update" ValidationGroup="Edit" />
于 2012-09-04T12:36:53.680 に答える
0

gv_RowCommandイベントで更新できます

サンプルコード:

protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName=="Edit")
    {
        //Perform validation & cancel update if the validation fails.
    }

   if(your validtaion successconditon flag set true)
    {    
       if (e.CommandName == "Update")
       {
       }
    }
}
于 2012-09-04T11:33:50.667 に答える
0

GridViewUpdateEventArgのCancelプロパティを使用して、更新をキャンセルすることもできます。

例えば

   protected void GridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
      // Your validation logic goes here...

     // If validation logic fails...
     e.Cancel = true;


    }
于 2013-08-03T05:21:55.310 に答える