以下是我的代码......
protected void Button3_Click(object sender,EventArgs e) { fillgrid();
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()方法只填充List。我希望现在的背景更加清晰。
答案 0 :(得分:0)
他们为什么要Checked==true
?您正在fillGrid
中创建它们,因为DataBind
它是DataSource
。因此,如果您发表评论Checked
,则可能会fillgrid()
。
从aspx标记和Text
的{{1}}我看到你想用它来插入(使用更好的ID)。然后我不知道你为什么要在插入任何内容之前重新加载数据源。只需将Buttton3
移到最后(在插入后重新加载网格)。
fillgrid