0

基本的に、私はリストビューの検証制御を入れようとしています。しかし、ControlToValidate="grpNameTextBox"を指定することはできません。

入れてみました

((RequiredFieldValidator)ListView1.FindControl("RequiredFieldValidator1")).ControlToValidate = ((TextBox)ListView1.FindControl("grpNameTextBox")).ID;

さまざまなイベントで、しかしそれを行うことはできません。

その後、検証コントロールを削除し、単純なラベルを付けました。次に、「ItemInserting」イベントに次のコードを配置します。

protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
    {
        TextBox t1 = (TextBox)ListView1.FindControl("grpNameTextBox"); // Getting Null Exception here
        if (t1.Text.Trim() == null)
        {
            throw new System.Exception("Field cannot be empty");


        }
    }

しかし、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」を取得します。エラー。どこが間違っているのか、誰か教えてもらえますか?

.aspxの部分を以下に示します。

<InsertItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                    Text="Insert"  />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                    Text="Clear" />
            </td>
            <td>
                &nbsp;</td>
            <td>
                <asp:TextBox ID="grpNameTextBox" runat="server" Text='<%# Bind("grpName") %>' />
                <asp:Label ID="lblError" runat="server" Text=""></asp:Label>
            </td>
        </tr>
    </InsertItemTemplate>

ありがとう。

4

3 に答える 3

0

コードを変更してみてください

  protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
  {
    TextBox t1 = (TextBox)e.Item.FindControl("grpNameTextBox"); 
    if(t1==null) return; // or exception
    Button btn = (Button)e.Item.FindControl("InsertButton");
    RequiredFieldValidator rfv = (RequiredFieldValidator)e.Item.FindControl("rfvId");
        if (rfv != null&& btn!=null)
        {
            rfv.ControlToValidate = t1.ClientID;
            rfv.ValidationGroup = rfv.ClientID + "ValidationGroup";
            btn.ValidationGroup = rfv.ClientID + "ValidationGroup";
        }

  }
于 2012-12-11T07:29:38.813 に答える
0

リストビューでテキストボックスIDを動的に生成していないため、aspxページの「grpNameTextBox」にcontrolTovalidate値を直接指定できます。

同じValidationGroupをRequiredFieldValidatorに割り当て、aspxコードの[挿入]ボタンを割り当てます。検証にコードは必要ありません。

于 2012-12-11T09:10:56.847 に答える
0

TextBox txt_btn =(TextBox)e.Item.FindControl( "grpNameTextBox");

于 2012-12-11T10:22:58.930 に答える