как проверить состояние флажков в столбцах сетки просмотра по нажатию кнопки - PullRequest
3 голосов
/ 08 декабря 2008

Я использовал столбец флажка в gridview. Я хочу проверить статус этих флажков. При нажатии кнопки необходимо проверить, установлен ли какой-либо флажок или нет. Если ни один флажок не установлен, тогда должен появиться предупреждающее сообщение, которое сначала ставит флажок.

Ответы [ 6 ]

4 голосов
/ 08 декабря 2008

Привет, я нашел ответ. Это выглядит следующим образом:

function checkBoxselectedornot()
{

       var frm=document.forms['aspnetForm'];
       var flag=false;
       for(var i=0;i<document.forms[0].length;i++)
       {
           if(document.forms[0].elements[i].id.indexOf('chkDownloadSelectedEvent')!=-1)
           {
                 if(document.forms[0].elements[i].checked)
                 {
                      flag=true
                 }  
           }
       } 
      if (flag==true)
      {
        return true
      }else
      {
        alert('Please select at least one Event.')
        return false
      }

}
3 голосов
/ 21 сентября 2012
   protected void OnCheckedChanged(object sender, EventArgs e)
        {
            bool flag = false;

            foreach (GridViewRow row in Grid_InvoiceGarden.Rows)
            {
                CheckBox chkItem = (CheckBox)row.FindControl("chkSelect");
                if (chkItem.Checked)
                    flag = true;
            }
            if (flag == true)
            {
                btnUpdate.Visible = true;
            }
            else
            {
                btnUpdate.Visible = false;
            }      
        }
2 голосов
/ 08 декабря 2008

Серверная сторона:

// в вашем событии нажатия кнопки:

флаг bool = false;

для (int i = 0; i

{
если (checkbox1.checked)

 flag = true;

}

если (флаг)

{

// означает, что по крайней мере один флажок установлен

* *} Тысяча двадцать-один
2 голосов
/ 08 декабря 2008
if(document.getElementById('checkBoxId').checked) {
    //checked
} else {
    //not checked
}

edit: если вы хотите установить все флажки формы, вы можете просмотреть коллекцию:

var inputs = document.getElementById('formId').getElementsByTagName('input');
var isChecked = false
for( var i = 0; i < inputs.length; i++) {
    if(inputs[i].type == 'checkbox' && inputs[i].checked) {
        isChecked = true;
    }
}

if(isChecked) {
    //at least one checkbox checked
}
1 голос
/ 08 декабря 2008

Вам нужно будет добавить какой-нибудь пользовательский Javascript на свою страницу, чтобы показывать предупреждение на стороне клиента. Вот метод, который я написал, который работает с GridView с именем GridView1 (это должно быть именем по умолчанию, если вы только что перетащили элемент управления на свою страницу ASPX):

<script type="text/javascript">
    function ClientCheck() {
        var valid = false;
        var gv = document.getElementById("GridView1");

        for (var i = 0; i < gv.all.length; i++) {
            var node = gv.all[i];
            if (node != null && node.type == "checkbox" && node.checked) {
                valid = true;
                break;
            }
        }
        if (!valid) {
            alert("Invalid. Please select a checkbox to continue.");
        }

        return valid;
    }
</script>

Вы можете видеть, что он устанавливает переменную для элемента управления GridView для начала, а затем перебирает все дочерние элементы в цикле for. Если потомком является checkbox, а это checked, тогда мы устанавливаем для переменной valid значение true. Если мы дойдем до конца итерации и не установим флажки, то valid останется ложным, и мы выполним оповещение.

Чтобы связать это с вашим GridView на странице ASPX, сначала сделайте для столбца кнопки значение TemplateField и окружите LinkButton вашим клиентским кодом. Если вы использовали конструктор для настройки ваших столбцов, вы можете использовать ссылку «Преобразовать это поле в TemplateField» в редакторе столбцов). Вот пример источника, с которым вы закончите:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
    <Columns>
        <asp:TemplateField HeaderText="Button Field" ShowHeader="False">
            <ItemTemplate>
                <span onclick="return ClientCheck();">
                    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="IDClick" Text='<%# Eval("YourDataSourceItem") %>'></asp:LinkButton>
                </span>
            </ItemTemplate>
        </asp:TemplateField>
        // ...your remaining columns...

Использование TemplateField позволяет нам добавлять любой код на стороне клиента, который нам нравится. Здесь мы добавляем span и используем onclick для вызова нашего ClientCheck метода.

Если вас не беспокоит оповещение, вы можете достичь своих целей с помощью элемента управления CustomValidator, который выполняется на стороне сервера.

Надеюсь, это поможет.

0 голосов
/ 09 июля 2010
 <script type="text/javascript" language="javascript">
        function CheckboxSelect() {

            var LIntCtr;
            var LIntSelectedCheckBoxes = 0;

            for (LIntCtr = 0; LIntCtr < document.forms[0].elements.length; LIntCtr++) {
                if ((document.forms[0].elements[LIntCtr].type == 'checkbox') && (document.forms[0].elements[LIntCtr].name.indexOf('chkID') > -1)) {
                    if (document.forms[0].elements[LIntCtr].checked == true) {
                        LIntSelectedCheckBoxes = parseInt(LIntSelectedCheckBoxes) + 1;
                    }
                }
            }
            if (parseInt(LIntSelectedCheckBoxes) == 0) {
                alert('User(s) Must Be Selected For operation !');
                return false;
            }
        }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...