javascript - 如何在页面加载时为复选框列表中的最新日期设置我的默认选中复选框而不是全选?

标签 javascript c# asp.net

我在 asp.net 中有一个复选框列表,由存储过程填充。而“全选”选项是在 aspx 中完成的。

目前我正在使用 javascript 将我的“全选”设置为默认设置,以便在选择“全选”时启用和禁用一些功能。

我现在的问题是我不想将“全选”设置为默认值而是将最新日期设置为页面加载时的默认值?当使用存储过程填充我的日期时,我该怎么做?

下面是我的复选框列表如何默认全选: enter image description here

以下是我想要实现的,即获取最新日期(第二个复选框): enter image description here

我的复选框列表代码:

<asp:CheckBoxList ID="Date_CBL" Class="checkboxlist" runat="server" AppendDataBoundItems="True" ViewStateMode="Enabled">
<asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
</asp:CheckBoxList>

我的 javascript 代码:

$(function () {
    if ($("#hidden").val() == "") {
        $("#Date_CBL :checkbox").removeAttr('disabled');
        $("[id*=Date_CBL] input:checkbox").eq(1).prop("checked", true);
        $("#hidden").val("set");
    }
});
    $(function () {
        $("#Date_CBL :checkbox").change(function () {
            var ischecked = $(this).is(":checked");
            var val = $(this).val();
            //alert(val);
            if (val == "Select All") {
                if (ischecked) {
                    $("#Date_CBL :checkbox").attr('disabled', 'disabled');
                    $(this).removeAttr('disabled');
                    $("#Date_CBL :checkbox").prop("checked", false);
                    $(this).prop("checked", true);
                    return;
                } else {
                    $("#Date_CBL :checkbox").removeAttr('disabled');
                    return;
                }
            } else if (val != "Select All") {
                if (ischecked) {
                    $("#Date_CBL :checkbox[value='Select All']").prop("checked", false);
                }
            }
        });
    });

用于填充复选框列表的代码:

        using (SqlConnection conn = new SqlConnection(dbConn))
            {
                try //Call stored procedure
                {
                    SqlCommand cmd = new SqlCommand(spddl, conn);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    //Populate CheckBoxList list items from store procedure
                    if (!IsPostBack)
                    {
                        Date_CBL.DataSource = ds.Tables[0];
                        Date_CBL.DataTextField = ds.Tables[0].Columns["DATA_DATE"].ToString();
                        Date_CBL.DataValueField = ds.Tables[0].Columns["DATA_DATE"].ToString();
                        Date_CBL.DataBind();

Bindgridview()
                    }
                    conn.Close();

                }

我在cs中的代码:

      public void BindGridView()
        {
            DateTime choosenDate = DateTime.MinValue;

            using (SqlConnection conn = new SqlConnection(dbConn))
            {
                using (SqlCommand cmd = new SqlCommand(spretrieve, conn))
                {

     //Bind selected CheckBoxList items into one string and pass into stored procedure as parameter 
                       String selectedDATE = String.Empty;
                        if (Date_CBL.SelectedValue == "Select All")
                        {
                            selectedDATE = "DATA_DATE";
                        }
                        else
                        {
                            foreach (ListItem item in Date_CBL.Items)
                            {
                                if (item.Selected)
                                {
                                    DateTime dtTemp = Convert.ToDateTime(item.Value);
                                    selectedDATE += "'" + dtTemp.ToString("yyyy-MM-dd") + "',";
                                }
                            }

                            selectedDATE = selectedDATE.Substring(0, selectedDATE.Length - 1);
                        }

cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@DATE", SqlDbType.VarChar).Value = selectedDATE;
 string query = cmd.CommandText;

                        //Populate grid view
                        conn.Open();
                        SqlDataAdapter da = new SqlDataAdapter(cmd);

                        DataSet ds = new DataSet();
                        da.Fill(ds);


                        Gridview1.DataSource = ds.Tables[0];
                        Gridview1.DataBind();

因此,我如何始终设置我的最新日期,这将是页面加载时默认的第二个复选框?

请指教谢谢。

最佳答案

你可能需要去了解页面事件
首先加载什么...
更新代码
.cs

protected void Page_Load(object sender, EventArgs e)
{
    // Variable
    string dbConn = string.Empty;
    string spddl = string.Empty;

    // CHeck
    if (!IsPostBack)
    {
        using (SqlConnection conn = new SqlConnection(dbConn))
        {
            // Error Handling
            try { conn.Open(); }
            catch (Exception ex) { throw ex; }

            SqlCommand cmd = new SqlCommand(spddl, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();

            // Error Handling
            try { da.Fill(ds); }
            catch (Exception ex) { throw ex; }

            Date_CBL.DataSource = ds.Tables[0];
            Date_CBL.DataTextField = ds.Tables[0].Columns["DATA_DATE"].ToString();
            Date_CBL.DataValueField = ds.Tables[0].Columns["DATA_DATE"].ToString();
            Date_CBL.DataBind();

            // Must Check From Code Behind since you are using it to before Page_Load.. Javascript will work after your Page Show Everything
            Date_CBL.Items[1].Selected = true; // Check 2nd Item

            BindGridView(conn);

            conn.Close();
        }
    }
}

private void BindGridView(SqlConnection conn)
{
    string spretrieve = string.Empty;
    string selectedDATE = String.Empty;

    using (SqlCommand cmd = new SqlCommand(spretrieve, conn))
    {

        //Bind selected CheckBoxList items into one string and pass into stored procedure as parameter 

        // This Will be wrong if you use selected Value
        if (Date_CBL.Items[0].Selected == true)
        {
            selectedDATE = "DATA_DATE";
        }
        else
        {
            foreach (ListItem item in Date_CBL.Items)
            {
                if (item.Selected)
                {
                    DateTime dtTemp = Convert.ToDateTime(item.Value);
                    selectedDATE += "'" + dtTemp.ToString("yyyy-MM-dd") + "',";
                }
            }

            selectedDATE = selectedDATE.TrimEnd(','); // Don't use substring cause last length is the comma u can use trimEnd
        }

        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@DATE", SqlDbType.VarChar).Value = selectedDATE;
        string query = cmd.CommandText;
        SqlDataAdapter da = new SqlDataAdapter(cmd);

        DataSet ds = new DataSet();
        try { da.Fill(ds); }
        catch (Exception ex) { throw ex; }

        Gridview1.DataSource = ds.Tables[0];
        Gridview1.DataBind();
    }
}

关于javascript - 如何在页面加载时为复选框列表中的最新日期设置我的默认选中复选框而不是全选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433029/

相关文章:

C# 冲突时设置默认命名空间

javascript让iframe成为父级

javascript - 了解带有 grunt 和主干以及相对路径的 r.js 选项

javascript - jQuery width() 返回 0

c# - 在 C# 中向其他人提供接口(interface)定义的最佳方式是什么?

c# - 为什么 C# 中的 Random 构造函数在方法末尾分配 Seed 参数?

javascript - ASP 更新面板中的引导模式对话框阻止了 tinyMCE 插件中的输入焦点

javascript - 无法从asp.net中的java脚本隐藏标签和gridview

asp.net - HMAC 和 WCF 服务 .net

javascript - Wordpress css 类干扰 slider