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




checkbox webforms (6)

यदि आप <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))

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 इनपुट प्रकार चेकबॉक्स की आईडी प्राप्त कर सकूं।

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


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

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

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

}

मुझे लगता है कि जवाब सभी सुझावों में बदलाव का एक संयोजन है। चेकबॉक्स् रनैट सर्वर बनाओ, जैसा कि 'मी उपलब्ध सर्वर-सा है:

<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 this.pnlFilter.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 />");
        }
    }

}

या यदि आपने चेकबॉक्स को asp:Checkbox बदल दिया है asp:Checkbox तो asp:Checkbox


मेरा मानना ​​है कि समस्या यह है कि आपका चेकबॉक्स सर्वर पर नहीं चलता है जैसे कि उनके पास कोड-पीछे में "असाइन किया गया" नियंत्रण नहीं है अपने चेकबॉक्स में "runat =" सर्वर को जोड़ने का प्रयास करें जैसे आपके पैनल में है


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

उदाहरण के लिए, चेक किए गए चेकबॉक्स आईडी इकट्ठा करें जिन्हें आपको 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);
    }
}

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

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 />");
        }
    }
}




webforms