积极答复者
GridView中动态显示Dropdownlist

问题
-
我的gridview设计如下:
<asp:BoundField DataField="UserSchool" HeaderText="学校" /> //假设这是第一列
<asp:TemplateField HeaderText="学校" Visible="false"> //这是第二列
<ItemTemplate>
<asp:DropDownList ID="DDL_School" runat="server" AutoPostBack="true" DataSource="<%#_dtSchool %>" DataTextField="SchoolName">
</asp:DropDownList>
</ItemTemplate><asp:ButtonField Text="编辑" CommandName="Edit" HeaderText="编辑" />
当点击ButtonField中的按钮时会触发RowCommand事件,此时我想将第一列隐藏,将第二列显示出来,并且只有编辑的那行显示,请问该如何实现?
答案
-
我试过了,还是不可以显示,不知道什么原因。然后我改了下gridview,让dropdownlist和绑定的值在同一个列中,
<asp:TemplateField HeaderText="学校" Visible="true">
<ItemTemplate>
<span runat="server" id="span_school">
<%#Eval("UserSchool") %>
</span>
<asp:DropDownList ID="DDL_School" runat="server" AutoPostBack="true" DataSource="<%#_dtSchool %>" DataTextField="SchoolName" Visible="false">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>后台:
protected void GV_UserInfo_RowEditing(object sender, GridViewEditEventArgs e)
{
GV_UserInfo.Rows[e.NewEditIndex].FindControl("span_School").Visible = false;
GV_UserInfo.Rows[e.NewEditIndex].FindControl("DDL_School").Visible = true;
}这样就ok了。
- 已建议为答案 ThankfulHeart 2012年3月30日 7:38
- 已标记为答案 BU XI - MSFTModerator 2012年4月6日 4:58
全部回复
-
-
請問你的第一個列指的是第一個Column嗎?
當你設定ButtonField的CommandName為Edit的時候,應該會觸發的是RowEditing事件,你可以嘗試利用下列程式碼來做隱藏。
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.Columns[0].Visible = false; }
以上說明若有錯誤請指教,謝謝。
http://www.dotblogs.com.tw/terrychuang/
我的第一列是指的第一个column,但是当把column[0]隐藏的时候整个列都隐藏了,我只想隐藏一个单元格
-
楼主,尝试这样做:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.Rows[e.NewEditIndex].Cells[索引].Visible = false; }
或者你设置Read-Only=True:
<asp:BoundField DataField="UserSchool" HeaderText="学校" ReadOnly=True/>
-
Wei_Dong的办法我试过了,是可以将那个单元格给隐藏掉,但是当我把含有dropdownlist的那个列给显示的时候却还是显示不出来。
<asp:GridView ID="GV_UserInfo" runat="server" AllowPaging="True" CellPadding="4"
ForeColor="#333333" GridLines="None" AutoGenerateColumns="False"
onrowcommand="GV_UserInfo_RowCommand"
onpageindexchanging="GV_UserInfo_PageIndexChanging"
onrowdeleting="GV_UserInfo_RowDeleting" >
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField HeaderText="序号"><ItemTemplate><%#(Container.DataItemIndex+1) %></ItemTemplate></asp:TemplateField>
<asp:BoundField DataField="UserName" HeaderText="用户名" />
<asp:BoundField DataField="UserTrueName" HeaderText="真实姓名" />
<asp:BoundField DataField="UserSchool" HeaderText="学校" />
<asp:TemplateField HeaderText="学校" Visible="false">
<ItemTemplate>
<asp:DropDownList ID="DDL_School" runat="server" AutoPostBack="true" DataSource="<%#_dtSchool %>" DataTextField="SchoolName">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UserDegree" HeaderText="学历" />
<asp:TemplateField HeaderText="学历" Visible="False">
<ItemTemplate>
<asp:DropDownList ID="DDL_Degree" runat="server" AutoPostBack="true" DataSource="<%#_alDegree %>">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="AuthorityName" HeaderText="权限" />
<asp:TemplateField HeaderText="权限" Visible="False">
<ItemTemplate>
<asp:DropDownList ID="DDL_Authority" runat="server" AutoPostBack="true" DataSource="<%#_alAuthority %>">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UserStatus" HeaderText="用户状态" />
<asp:CommandField DeleteText="<div id="delete" onclick="JavaScript:return confirm('确定删除此信息?')">删除</div>"
HeaderText="删除" ShowDeleteButton="True" />
<asp:ButtonField Text="编辑" CommandName="Edit" HeaderText="编辑" />
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White"/>
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" /> </asp:GridView>后台里:
GV_UserInfo.Rows[e.NewEditIndex].FindControl("DDL_School").visible=true;
-
Hi,TerryChuang
后来我想会不会是因为是两个列而不是同一个列的问题呢?如果说把dropdownlist和绑定的值放在同一个template中是不是就可以实现了,可是用了后发现依然不可以显示dropdownlist。。。。。。。求救啊。。
-
我试过了,还是不可以显示,不知道什么原因。然后我改了下gridview,让dropdownlist和绑定的值在同一个列中,
<asp:TemplateField HeaderText="学校" Visible="true">
<ItemTemplate>
<span runat="server" id="span_school">
<%#Eval("UserSchool") %>
</span>
<asp:DropDownList ID="DDL_School" runat="server" AutoPostBack="true" DataSource="<%#_dtSchool %>" DataTextField="SchoolName" Visible="false">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>后台:
protected void GV_UserInfo_RowEditing(object sender, GridViewEditEventArgs e)
{
GV_UserInfo.Rows[e.NewEditIndex].FindControl("span_School").Visible = false;
GV_UserInfo.Rows[e.NewEditIndex].FindControl("DDL_School").Visible = true;
}这样就ok了。
- 已建议为答案 ThankfulHeart 2012年3月30日 7:38
- 已标记为答案 BU XI - MSFTModerator 2012年4月6日 4:58