这天不知道自己在干吗,居然发现需要实现在一个Gridview中嵌入 DropDownList的功能。刚一开始还想是小case而已,不用花什么精力就应该能搞出来。于是在Gridview的属性集里找呀找的,却发现没有。再到网上去搜,呵呵,结果发现挺多的。我心里还说“小样”,一点难度都没。但到了把网上的代码放到自己的里面。就发现有问题了。不是和数据库连不上,就是不能把手工加在DropDownList里的项目显示出来。我靠!还真玩上火了呢。找了些网友帮忙,结果网友说这说那的倒说了大半天。我就是调不出来。没办法了,只有自己乱撞。嘿嘿,天不忙我,居然又在网上找到一个示例,因为实现起来有点差异。在我改了之后,居然就可以了。
下面是代码:
<asp:GridView ID="LimitGridView" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames = "UserName"
DataSourceID ="mySqlDataSource" ForeColor="Purple" GridLines="None" Width="330px" Font-Size="Smaller" BorderColor="#C0C0FF" BorderStyle="Double">
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="UserName" HeaderText="用户名" SortExpression="UserName">
<HeaderStyle Height="9px" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="Password" HeaderText="密码" SortExpression="Password" >
<HeaderStyle Height="9px" Width="80px" />
</asp:BoundField>
<asp:TemplateField HeaderText="角色">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Limit") %>'>
<asp:ListItem>材料申报人员</asp:ListItem>
<asp:ListItem>项目负责人员</asp:ListItem>
<asp:ListItem>采购部人员</asp:ListItem>
<asp:ListItem>成本部人员</asp:ListItem>
<asp:ListItem>系统管理员</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Limit") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Image" CancelImageUrl="~/Img/bt_back_blog.gif" EditImageUrl="~/Img/edit.gif"
ShowEditButton ="True" UpdateImageUrl="~/Img/Save.gif" />
<asp:CommandField ButtonType="Image" DeleteImageUrl="~/Img/delete.gif" ShowDeleteButton="True" />
</Columns>
<RowStyle BackColor="#E3EAEB" />
<EditRowStyle BackColor="#C0C0FF" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="RoyalBlue" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="mySqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:BuildingsConnectionString %>"
SelectCommand ="SELECT * FROM [tLimit]" DeleteCommand="DELETE FROM tLimit Where UserName = @UserName" UpdateCommand="UPDATE tLimit SET Password =@Password, Limit =@Limit Where UserName =@UserName"></asp:SqlDataSource>
DataSourceID ="mySqlDataSource" ForeColor="Purple" GridLines="None" Width="330px" Font-Size="Smaller" BorderColor="#C0C0FF" BorderStyle="Double">
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="UserName" HeaderText="用户名" SortExpression="UserName">
<HeaderStyle Height="9px" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="Password" HeaderText="密码" SortExpression="Password" >
<HeaderStyle Height="9px" Width="80px" />
</asp:BoundField>
<asp:TemplateField HeaderText="角色">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Limit") %>'>
<asp:ListItem>材料申报人员</asp:ListItem>
<asp:ListItem>项目负责人员</asp:ListItem>
<asp:ListItem>采购部人员</asp:ListItem>
<asp:ListItem>成本部人员</asp:ListItem>
<asp:ListItem>系统管理员</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Limit") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Image" CancelImageUrl="~/Img/bt_back_blog.gif" EditImageUrl="~/Img/edit.gif"
ShowEditButton ="True" UpdateImageUrl="~/Img/Save.gif" />
<asp:CommandField ButtonType="Image" DeleteImageUrl="~/Img/delete.gif" ShowDeleteButton="True" />
</Columns>
<RowStyle BackColor="#E3EAEB" />
<EditRowStyle BackColor="#C0C0FF" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="RoyalBlue" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="mySqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:BuildingsConnectionString %>"
SelectCommand ="SELECT * FROM [tLimit]" DeleteCommand="DELETE FROM tLimit Where UserName = @UserName" UpdateCommand="UPDATE tLimit SET Password =@Password, Limit =@Limit Where UserName =@UserName"></asp:SqlDataSource>
这个Gridview在一般情况下,角色一项的显示和其它的一样,只有进入了编辑状态才出现DropDownList。
不过对Asp.net我真的还只是十窍通九窍--还有一窍不通。对于里面的SqlDataSource的UpdateCommand,我想不出为什么还用给那里参数付值,那些参数是从哪里获取数据的呢。还有,那个Delete 语句究竟该怎么写才好。不像现在这样的,本来想删除一个,谁知道却是大屠杀行动。
再努力吧。以后获许就不用让这些问题来烦自己了。