0

以下は私のリストビューマークアップです

<asp:ListView ID="ListView1" runat="server" DataKeyNames="SNO" 
    DataSourceID="SqlDataSource1" InsertItemPosition="LastItem" OnItemCreated="DateCalculation" OnItemUpdated="Update">

ご覧のとおり、 DateCalculationUpdateButtonの2つのイベントがあります。日付計算イベントは以下のとおりです:-

 protected void DateCalculation(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.InsertItem)
    {
        TextBox txtbox1 = e.Item.FindControl("DateTakenPlaceTextBox") as TextBox;
        txtbox1.Text = DateTime.Now.ToString("yyyy/MM/dd");

    }
}

Now when i try to add similar event to Update i.e.

protected void Update(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.InsertItem)
    {
        TextBox txtbox2 = e.Item.FindControl("AmountTextBox") as TextBox;
        if (txtbox2.Text == null)
        {

        }
    }
}

次のエラーが発生します: 「更新」のオーバーロードがデリゲート
「System.EventHandler」に一致しません

これは、Listviewitemeventargsの代わりにeventargsを記述する必要があることを意味しますか?listviewitemsにアクセスしたいので、 Listviewitemeventargsが必要です。誰かが何をすべきか提案できますか?

4

1 に答える 1

0

NewValuesOldValuesAffectedRowsなどの使用可能なプロパティを含むListViewUpdatedEventArgsを探しています。

編集
null値と空の値を防ぐために、代わりにItemUpdatingイベントを使用できます。アイテムを更新する前に、これを確認する必要があります。そうでなければ手遅れです。

<asp:ListView ID="ListView1" runat="server" DataKeyNames="SNO" 
              DataSourceID="SqlDataSource1" InsertItemPosition="LastItem"
              OnItemCreated="DateCalculation" OnItemUpdating="Updating">
protected void Updating(Object sender, ListViewUpdateEventArgs e)
{
  // Cancel the update operation if any of the fields is empty or null.
  foreach (DictionaryEntry de in e.NewValues)
  {
    // Check if the value is null or empty.
    if (de.Value == null || de.Value.ToString().Trim().Length == 0)
    {
      Message.Text = "Cannot set a field to an empty value.";
      e.Cancel = true;
    }
  }
}

特定のフィールドでnullまたは空をチェックする場合:

var val = e.NewValues["Amount"];
if (val == null || val.ToString().Trim().Length == 0)
{
  Message.Text = "Cannot set a field to an empty value.";
  e.Cancel = true;
}
于 2013-03-26T12:17:09.947 に答える