【发布时间】:2013-03-09 11:38:07
【问题描述】:
以下是我的代码...
protected void Button3_Click(object sender, EventArgs e) { 填充网格();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
Label lblteachername = (Label)GridView1.Rows[i].FindControl("lblgridteachername");
CheckBox status = (CheckBox)GridView1.Rows[i].FindControl("chkgridstatus");
if (status.Checked == true)
{
string q = "insert into teacher (status) values('"+dayList[i].Date+"') where schid='"+dayList[i].SchId+"'";
}
}
}
问题是if (status.Checked==true) 总是返回false,无论我是否选中了 girdview 中的复选框。
public void fillgrid()
{
string q = "select * from teacher where teachername='" + drpteachername.SelectedItem.ToString() + "' and ('2013-03-01' between date and todate) and '2013-03-31' between date and todate";
dt = dbo.Getdt(q);
//NOTE- if you bind gridview with dt, gridview will automatically generate no. of rows equal to the no. of rows returned to dt through the sql query from database.
abc();
DataTable dt1 = new DataTable();
for (int i = 0; i < dayList.Count; i++)
{
DataRow dr = dt1.NewRow();
dt1.Rows.Add(dr);
}
GridView1.DataSource = dt1;
GridView1.DataBind();
string teachername = drpteachername.SelectedItem.ToString();
string month = drpmonth.SelectedItem.ToString();
string strclass = drpclass1.SelectedItem.ToString();
string section = drpsection1.SelectedItem.ToString();
//string time=drpstarttime1.SelectedItem.ToString();
for (int i = 0; i < dayList.Count; i++)
{
Label lbldate = (Label)GridView1.Rows[i].FindControl("lblgriddate");
string fullstring = Convert.ToString(dayList[i].Date);
lbldate.Text = fullstring.Substring(0, 9);
//string q1 = "select starttime,endtime from teacher where teachername='"+drpteachername+"', and '"+fullstring+"' between date and todate";
//dt = dbo.Getdt(q1);
//int count=dt.Rows.Count;
Label lblteachername = (Label)GridView1.Rows[i].FindControl("lblgridteachername");
lblteachername.Text = teachername;
Label lblclass = (Label)GridView1.Rows[i].FindControl("lblgridclass");
lblclass.Text = dayList[i].Class;
Label lblsection = (Label)GridView1.Rows[i].FindControl("lblgridsection");
lblsection.Text = dayList[i].Section;
Label lbltime = (Label)GridView1.Rows[i].FindControl("lblgridtime");
lbltime.Text = dayList[i].StartTime.Substring(0, 5) + "-" + dayList[i].EndTime.Substring(0, 5);
}
}
ASPX:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="TeacherName">
<ItemTemplate>
<asp:Label ID="lblgridteachername" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Class">
<ItemTemplate>
<asp:Label ID="lblgridclass" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Section">
<ItemTemplate>
<asp:Label ID="lblgridsection" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lblgriddate" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Time">
<ItemTemplate>
<asp:Label ID="lblgridtime" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Present">
<ItemTemplate>
<asp:CheckBox ID="chkgridstatus" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Button ID="Button3" runat="server" Text="Insert" onclick="Button3_Click" />
</td>
abc() 方法只是填充列表。我希望现在上下文更清楚了。
【问题讨论】:
-
他们为什么要有
Checked==true?我假设你是在fillGrid中创建它们,因为你在那里DataBind。因此,当您注释掉fillgrid()(取决于上下文)时,它们可能是Checked。 -
我正在从 fillgrid() 填充这个 GridView。然后检查行。我是否需要在不使用 fillgrid() 的情况下单击按钮填充网格?
-
我没有在页面加载时绑定。我已经发布了更多代码,请检查我的编辑。
-
@TimSchmelter 我想我知道我做错了什么。我稍后会回来。
标签: c# asp.net sql-server-2008