c# - एक asp.net प्रपत्र में चेकबॉक्स कैसे गिनें




checkbox webforms (5)

आप GridView का उपयोग कर सकते हैं और कोड पक्ष ऐसा करते हैं-

for (int i = 0; i < **yourGridViewId** .Rows.Count; i++)
    {

CheckBox cb = ((CheckBox)**yourGridViewId** .Rows[i].FindControl(" **yourCheckboxId**"));
....

}

ASP.NET:

<asp:Panel ID="pnlFilter" runat="server">
    <div class="dvFilter">
        <input type="checkbox" id="cb01" checked="checked" />
        <label for="cb01">All</label>
    </div>
    <div class="dvFilter">
        <input type="checkbox" id="cb02" checked="checked" />
        <label for="cb02">None</label>
    </div>
</asp:Panel>

सी#:

foreach (Control item in this.form1.Controls)
{
    System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = item as System.Web.UI.HtmlControls.HtmlInputCheckBox;
    if (_cbx != null)
    {
        if (_cbx.Checked)
        {
            //Do something: 
            Response.Write(_cbx.Name + " was checked.<br />");
        }
    }

}

मुझे _cbx चर के लिए एक null मान मिल रहा है

मैं इसे कैसे अद्यतन कर सकता हूं ताकि मैं सभी checked इनपुट प्रकार चेकबॉक्स की आईडी प्राप्त कर सकूं।

मैंने इस उत्तर की कोशिश की: टेक्स्टबोक्स और चेकबॉक्स की संख्या को एक रूप में गिना, लेकिन मेरे लिए कोई काम नहीं किया।


इसे इस्तेमाल करो:

foreach (HtmlElement element in webBrowser1.Document.All)
{
    System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = element as System.Web.UI.HtmlControls.HtmlInputCheckBox;
    if (_cbx != null)
    {
        if (_cbx.Checked)
        {
            //Do something: 
            Response.Write(_cbx.Name + " was checked.<br />");
        }
    }
}

यदि आप <input type="checkbox"> का उपयोग करना चाहते हैं तो आपको DOM को पार्स करने की आवश्यकता है।

मैं आपको <asp:CheckBox> <input type="checkbox"> <asp:CheckBox> बजाय <input type="checkbox"> का उपयोग करने की सलाह देता हूं। फिर आप अपने नियंत्रणों को सी # से एक्सेस कर सकते हैं

अपने लुकअप में:
var _cbx = item as System.Web.UI.WebControls.CheckBox;

आप सभी नियंत्रणों के माध्यम से पाशन किए बिना सभी चेकबॉक्स प्राप्त कर सकते हैं।
LINQ का उपयोग करें:
this.form1.Controls.Where(c=>c.GetType() == typeof(CheckBox))


सबसे पहले, आपको runat="server" को जोड़ने या उन्हें asp:CheckBox बदलने की जरूरत है asp:CheckBox नियंत्रण

लेकिन यदि आप उन्हें जोड़ते हैं, तो इसका कारण यह नहीं है क्योंकि वे दूसरे नियंत्रण में हैं तो उन्हें pnlFilter में pnlFilter

<asp:Panel ID="pnlFilter" runat="server">
    <div class="dvFilter">
        <input type="checkbox" id="cb01" checked="checked" runat="server" />
        <label for="cb01">All</label>
    </div>
    <div class="dvFilter">
        <input type="checkbox" id="cb02" checked="checked" runat="server" />
        <label for="cb02">None</label>
    </div>
</asp:Panel>

कोड के पीछे

foreach (Control item in pnlFilter.Controls)
{
    HtmlInputCheckBox _cbx = item as HtmlInputCheckBox;
    if (_cbx != null)
    {
        if (_cbx.Checked)
        {
            //Do something: 
            Response.Write(_cbx.Name + " was checked.<br />");
        }
    }
}

मुझे लगता है कि फ्रंट-एंड प्रोसेस से सामने वाले एंड स्ट्रेस तक पहुंचने में बेहतर होगा।

उदाहरण के लिए, चेक किए गए चेकबॉक्स आईडी इकट्ठा करें जिन्हें आपको JQuery की आवश्यकता होती है और उन्हें HiddenField तो अनुरोध से बैक-एंड प्राप्त करें।

उदाहरण

<asp:Panel ID="pnlFilter" runat="server">
    <div class="dvFilter">
        <input type="checkbox" id="cb01" checked="checked" />
        <label for="cb01">All</label>
    </div>
    <div class="dvFilter">
        <input type="checkbox" id="cb02" checked="checked" />
        <label for="cb02">None</label>
    </div>
    <input type="hidden" id="hdfIds" name="hdfIds" />
</asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

JQuery भाग (लिंक JQuery और json2 लिब पहले)

function recoverCbxStatus() {
    if (hdfIds.value) {
        var ids = JSON.parse(hdfIds.value);
        ids.forEach(function (id) {
            $('#' + id).prop('checked', true);
        });
    }
}

function refreshIds() {
    var ids = [];
    $('input:checkbox[id^="cb"]:checked').each(function () {
        ids.push($(this).attr("id"));
    });
    hdfIds.value = JSON.stringify(ids);
}

$(document).ready(function () {
    recoverCbxStatus();
    refreshIds();
});

$('input:checkbox[id^="cb"]').change(function () {
    refreshIds();
});

बैक-एंड (न्यूजेट जेसन। नेट)

protected void Page_Load(object sender, EventArgs e)
{
    string idsJson = Request["hdfIds"];
    List<string> ids;
    if (idsJson != null)
    {
        ids = JsonConvert.DeserializeObject<List<string>>(idsJson);
        Response.Write("count: " + ids.Count);
    }
}






webforms