在DataGrid中绑定的模板列"类型"表取的是数据库中的表,为什么运行后点击编辑列,类型列表总是有重复的数据绑定,我用了许多方法都不行,怎么回事?
页面文件:
<asp:TemplateColumn HeaderText="类型">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.class") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="ddlClassType"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
CS文件:我用ddlCurrentClass.Items.Count==0,ddlCurrentClass.Items.Clear()都不行?运行后列表的数据总是重复取出来添加的?
if(e.Item.ItemType==ListItemType.EditItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
string current = drv["Department"].ToString();
strSql="SELECT ClassID,Class FROM tblClass ORDER BY ClassID";
con=new SqlConnection(Session["SQLCONNECTION"].ToString());
scm=new SqlCommand(strSql,con);
sda=new SqlDataAdapter(scm);
sda.Fill(ds,"class");
ddlCurrentClass.DataSource=ds.Tables["class"].DefaultView;
ddlCurrentClass.DataTextField="Class";
ddlCurrentClass.DataValueField="ClassID";
ddlCurrentClass.DataBind();
ddlCurrentDept.SelectedIndex
= ddlCurrentDept.Items.IndexOf(ddlCurrentDept.Items.FindByText(current));
}
页面文件:
<asp:TemplateColumn HeaderText="类型">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.class") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="ddlClassType"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
CS文件:我用ddlCurrentClass.Items.Count==0,ddlCurrentClass.Items.Clear()都不行?运行后列表的数据总是重复取出来添加的?
if(e.Item.ItemType==ListItemType.EditItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
string current = drv["Department"].ToString();
strSql="SELECT ClassID,Class FROM tblClass ORDER BY ClassID";
con=new SqlConnection(Session["SQLCONNECTION"].ToString());
scm=new SqlCommand(strSql,con);
sda=new SqlDataAdapter(scm);
sda.Fill(ds,"class");
ddlCurrentClass.DataSource=ds.Tables["class"].DefaultView;
ddlCurrentClass.DataTextField="Class";
ddlCurrentClass.DataValueField="ClassID";
ddlCurrentClass.DataBind();
ddlCurrentDept.SelectedIndex
= ddlCurrentDept.Items.IndexOf(ddlCurrentDept.Items.FindByText(current));
}
{
//你的绑定
}
private void grdMxz_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
string current = drv["Department"].ToString();
strSql="SELECT ClassID,Class FROM tblClass ORDER BY ClassID";
con=new SqlConnection(Session["SQLCONNECTION"].ToString());
scm=new SqlCommand(strSql,con);
sda=new SqlDataAdapter(scm);
sda.Fill(ds,"class");
ddlCurrentClass.DataSource=ds.Tables["class"].DefaultView;
ddlCurrentClass.DataTextField="Class";
ddlCurrentClass.DataValueField="ClassID";
ddlCurrentClass.DataBind();
ddlCurrentDept.SelectedIndex
= ddlCurrentDept.Items.IndexOf(ddlCurrentDept.Items.FindByText(current));
}
}
下面这一个也应该可以SELECT ClassID,Class FROM tblClass group by classid,classok了,数据处理最好在数据提取的时候完成
if(e.Item.ItemType==ListItemType.EditItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
string current = drv["Department"].ToString();
ddlCurrentClass.DataSource=GetDataSet().Tables["class"].DefaultView;;
ddlCurrentClass.DataTextField="Class";
ddlCurrentClass.DataValueField="ClassID";
ddlCurrentClass.DataBind();
ddlCurrentDept.SelectedIndex
= ddlCurrentDept.Items.IndexOf(ddlCurrentDept.Items.FindByText(current));
}
ddlCurrentClass.Items.Clear()
试试
ddlCurrentClass.Items.Clear();
ddlCurrentClass.DataBind();