我在 asp.net 中有一个复选框列表,由存储过程填充。而“全选”选项是在 aspx 中完成的。
目前我正在使用 javascript 将我的“全选”设置为默认设置,以便在选择“全选”时启用和禁用一些功能。
我现在的问题是我不想将“全选”设置为默认值而是将最新日期设置为页面加载时的默认值?当使用存储过程填充我的日期时,我该怎么做?
我的复选框列表代码:
<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/