DataGrid基础,添加DropDownList,改变单击行的颜色,隐藏显示列
一:基本
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" DataSource='<%# ds.Tables[""].DefaultView%>' SelectIndex='<GetSelectIndex2((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'>
<asp:ListItem value="aaaa">aaaa</asp:ListItem>
<asp:ListItem value="bbbb">bbbb</asp:ListItem>
<asp:ListItem value="cccc">cccc</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="标题" SortExpression="对应字段名">
<ItemTemplate>
//平常状态时套用的的模板
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
//编辑模式下套用的模板
<asp:TextBox runat="server" id="" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
<asp:RequiredFieldValidator id="" runat="server"/>
//可添加大量你喜欢的控件
</EditItemTemplate>
</asp:TemplateColumn>
<ItemTemplate>
//平常状态时套用的的模板
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
//编辑模式下套用的模板
<asp:TextBox runat="server" id="" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
<asp:RequiredFieldValidator id="" runat="server"/>
//可添加大量你喜欢的控件
</EditItemTemplate>
</asp:TemplateColumn>
<%%> 服务器代码标识符 # 数据绑定的符号
DataGrid的中的一行称为一个DataGridItem,每个DataGridItem包含一个隐藏的GridItemIndex属性,记录DataGridItem的索引值,从0开始;另外每个DataGridItem还包含一个隐藏的DataItem属性,其中包含一个参考指向数据源中对应的一条数据
在<asp:BoundColumn HeaderText="" DataField="" ReadOnly=true></asp:BoundColumn> 设为ReadOnly在编加模式下可以只读显示
二:在DataGrid中添加DropDownList
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" DataSource='<%# ds.Tables[""].DefaultView%>' DataTextField="" DataValueField="" SelectIndex='<GetSelectIndex((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" DataSource='<%# ds.Tables[""].DefaultView%>' DataTextField="" DataValueField="" SelectIndex='<GetSelectIndex((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'/>
</EditItemTemplate>
public int GetSelectIndex(string str)
{
//这样的一个缺点是 DropDownList可能取重复的值,但有时是必要的,所以另一个静态声明方法
//而且传入的参数那列必须是唯一值,如果有重复值的话,index就会只取前面的
int i = 0;
if(str!=null)
{
foreach(DataRow classroom in ds.Tables["UserInfo"].Rows)
{
if(str==classroom["UserName"].ToString())
{
break;
}
i=i+1;
}
}
return i;
}
{
//这样的一个缺点是 DropDownList可能取重复的值,但有时是必要的,所以另一个静态声明方法
//而且传入的参数那列必须是唯一值,如果有重复值的话,index就会只取前面的
int i = 0;
if(str!=null)
{
foreach(DataRow classroom in ds.Tables["UserInfo"].Rows)
{
if(str==classroom["UserName"].ToString())
{
break;
}
i=i+1;
}
}
return i;
}
这里是静态绑定DropDownList数据源,取索引略去。
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" DataSource='<%# ds.Tables[""].DefaultView%>' SelectIndex='<GetSelectIndex2((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'>
<asp:ListItem value="aaaa">aaaa</asp:ListItem>
<asp:ListItem value="bbbb">bbbb</asp:ListItem>
<asp:ListItem value="cccc">cccc</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
在Item_Create中添加代码:
DataGrid Item Create
客户端代码:(javascript):
<script language=javascript>
function CG(obj)
{
var Curr_TR=document.all.tags("tr");
for(var i=1;i<Curr_TR.length;i++)
{
Curr_TR[i].Style.backgroundColor="white";
}
if(obj.style.backgroundColor="yellow")
{
obj.style.backgroundColor="white";
}
else
{
obj.style.backgroundColor="yellow";
}
}
</script>
function CG(obj)
{
var Curr_TR=document.all.tags("tr");
for(var i=1;i<Curr_TR.length;i++)
{
Curr_TR[i].Style.backgroundColor="white";
}
if(obj.style.backgroundColor="yellow")
{
obj.style.backgroundColor="white";
}
else
{
obj.style.backgroundColor="yellow";
}
}
</script>
四:隐藏显示列
隐藏和显示DataGrid列的操作
四:动态添加列,删除列
BoundColumn col = new BoundColumn();
col.HeaderText="标题";
col.DataField="绑定数据列";
DataGrid1.Columns.Add(col);
DataGrid1.Columns.Remove(col);
col.HeaderText="标题";
col.DataField="绑定数据列";
DataGrid1.Columns.Add(col);
DataGrid1.Columns.Remove(col);