1

RadGrid には、チェック ボックス、ドロップダウン リスト、必須フィールド バリデータがあります。チェックボックスの選択時に、ドロップダウンの必要なフィールドバリデーターを無効にすることを有効にしたいと考えています。以下の Java スクリプト コードは、編集モードで必要なフィールド バリデータを有効または無効にします。

しかし、Rad グリッド編集モードの更新ボタン (チェック ボックスをオフにし、ドロップ ダウン ボックスで選択した値も空 ("") をクリックすると、(おそらくポストバックを実行している) 少し待ってから、必要なフィールド バリデーターを再度起動します。

なぜそのように振る舞うかの考え。感謝するのに役立ちます。

以下のリンクからコントロールアクセス部分を取得しました。 javascript から Telerik RadGrid 編集モードにアクセスする

私の Rad グリッド マークアップ:

 <EditItemTemplate>
<asp:CheckBox ID="chkConfigurable" runat="server" Checked='<%# Bind("Configurable") %>'
  </EditItemTemplate>  

これは私のJavaスクリプトコードです:

// チェックボックスの選択に応じて、必要なフィールドバリデーターを有効または無効にします

    function EnableDisbaleConfigRfv(chkbx) {

        var grid = $find("<%=rgItems.ClientID %>");
        var masterTable = grid.get_masterTableView();
        // get the required field validator id from grid
        var rfv = $telerik.$(masterTable.get_element()).find('[id*="rfvddlConfigTeam"]')[0];

        // enable disable validator
        if (chkbx) {
            ValidatorEnable(rfv, true);
            ValidatorUpdateDisplay(rfv); // this one added after reading some posts but no luck.


        } else {
            ValidatorEnable(rfv, false);

        }
    }
4

1 に答える 1

1

以下のコード スニペットで試してください。

js

 function ValidateValidation(cmb, chk, lbl) {

            cmb = $find(cmb);
            chk = document.getElementById(chk);
            lbl = document.getElementById(lbl);
            if (chk.checked) {
                if (cmb.get_value() != null && cmb.get_value() != "" && cmb.get_selectedIndex() >= 0) {
                    debugger;
                    return true;
                }
                else {
                    lbl.style.display = '';
                    return false;
                }
            }
            else {
                lbl.style.display = 'none';
                return true;
            }


        }

aspx

 <telerik:GridTemplateColumn>
                    <EditItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                        <telerik:RadComboBox ID="RadComboBox1" runat="server">
                            <Items>
                            </Items>
                        </telerik:RadComboBox>
                        <asp:Label ID="Label1" runat="server" ForeColor="Red" Text="your messege" Style="display: none;"></asp:Label>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>

aspx.cs

  protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        GridEditableItem item = e.Item as GridEditableItem;
        CheckBox CheckBox1 = item.FindControl("CheckBox1") as CheckBox;
        Label Label1 = item.FindControl("Label1") as Label;
        RadComboBox RadComboBox1 = item.FindControl("RadComboBox1") as RadComboBox;

        (item.FindControl("UpdateButton") as LinkButton).Attributes.Add("onclick", "return ValidateValidation('" + RadComboBox1.ClientID + "','" + CheckBox1.ClientID + "','" + Label1.ClientID + "');");

    }
}
于 2012-08-31T10:47:25.423 に答える