1

私は C#.Net で作業しています。私はASPボタンを持っています..

<asp:Button ID="btnSubmitData" ToolTip="Show" runat="server" Text="SHOW" CausesValidation="false"
                            OnClientClick="return FindSelectedItems();" OnClick="btnShow_Click" />

OnClientClick で呼び出される関数は、

function FindSelectedItems() {

    var sender = document.getElementById('lstMultipleValues');
    var cblstTable = document.getElementById(sender.id);
    var checkBoxPrefix = sender.id + "_";
    var noOfOptions = cblstTable.rows.length;
    var selectedText = "";
    var total = 0;
    for (i = 0; i < noOfOptions; ++i) {
        if (document.getElementById(checkBoxPrefix + i).checked) {
            total += 1;
            if (selectedText == "")
                selectedText = document.getElementById
                               (checkBoxPrefix + i).parentNode.innerText;
            else
                selectedText = selectedText + "," +
             document.getElementById(checkBoxPrefix + i).parentNode.innerText;
        }
    }
    var hifMet1 = document.getElementById('<%=hifMet1.ClientID%>');
    hifMet1.value = selectedText;

    if (total == 0) {
        var panel = document.getElementById('<%=pnlOk.ClientID%>');
        document.getElementById('<%=pnlOk.ClientID%>').style.display = 'block';
        var Label1 = document.getElementById('<%=Label3.ClientID%>');
        Label1.innerHTML = "Atleast one metric should be selected.";
        var btnLoc = document.getElementById('<%=btnLoc.ClientID%>');
        btnLoc.disabled = true;
        var btnProd = document.getElementById('<%=btnProd.ClientID%>');
        btnProd.disabled = true;
        var btnLastYear = document.getElementById('<%=btnLastYear.ClientID%>');
        btnLastYear.disabled = true;
        return false;
    }
    else if (total > 2) {
        var panel = document.getElementById('<%=pnlOk.ClientID%>');
        document.getElementById('<%=pnlOk.ClientID%>').style.display = 'block';
        var Label1 = document.getElementById('<%=Label3.ClientID%>');
        Label1.innerHTML = "Only two metrics can be compared.";
        var btnLoc = document.getElementById('<%=btnLoc.ClientID%>');
        btnLoc.disabled = true;
        var btnProd = document.getElementById('<%=btnProd.ClientID%>');
        btnProd.disabled = true;
        var btnLastYear = document.getElementById('<%=btnLastYear.ClientID%>');
        btnLastYear.disabled = true;
        return false;
    }
    else {
        return true;
    }
}

SHOW ボタンをクリックしたら、検証を行って、少なくとも 1 つのチェックボックスをチェックボックス リストでチェックする必要があります。その警告メッセージが表示されます (つまり、「少なくとも 1 つのメトリックを選択する必要があります」)。ただし、この部分の後、ページがリロードされます。

この時点でページの更新を避けたいと思います。ここで何をすればいいですか?

4

2 に答える 2

2

CustomValidator1 つの方法は、コントロールとクライアント検証関数を使用して、検証関数を適切な ASP .Net 検証ライフサイクルにフックすることです。

いくつかのマイナーな変更により、JavaScript コードをクライアント検証関数に変えることができます。

ここに完全な例があります

関連スニペット

<script language="javascript"> 
   function ClientValidate(source, arguments)
   {
        // Your code would go here, and set the IsValid property of arguments instead
        // of returning true/false

        if (arguments.Value % 2 == 0 ){
            arguments.IsValid = true;
        } else {
            arguments.IsValid = false;
        }
   }
</script>

<asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>

  <asp:Button id="Button1"
       Text="Validate" 
       OnClick="ValidateBtn_OnClick" 
       runat="server"/>

クライアントの検証は、常にサーバーの検証で再確認する必要があります。CustomValidatorこれを実現するには、クライアント/サーバー検証関数の両方でを使用することをお勧めします。

于 2012-10-26T11:59:52.760 に答える
0
Remove  script
else {
        return true;
     }
part from script and call function like this 

OnClientClick="javascript:return FindSelectedItems();"
This work for me.
于 2012-10-26T12:38:56.360 に答える