我已经使用Itemtemplate为每一列创建了一个批量编辑网格视图。非编辑模式的标签,编辑模式的文本框。但是只有当gridview的结构是已知的(在asp中定义模板)时,这才能起作用。
 <asp:TemplateField HeaderText="Name" ConvertEmptyStringToNull="True">
                    <ItemTemplate>
                        <asp:Label ID="lblName" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# Eval("name") %>' />
                        <asp:TextBox ID="txtName" ControlStyle-CssClass="wide" Visible='<%# IsInEditMode %>'
                            runat="server" Text='<%# Eval("name") %>' />
                    </ItemTemplate>
  </asp:TemplateField>现在,我试图实现的是,当用户选择一个下拉值时,sql查询被触发并返回结果。这个结果显示在网格视图中。但是问题出现了,因为从下拉列表中选择的每个值的结果中的列数可能不同。我希望将网格视图设置为可编辑(或只读)。这需要为每列定义两个模板。
所以我想知道如何动态地做到这一点,即根据sql返回的列数来定义模板。
发布于 2015-02-25 00:44:11
首先,您可以使用此事件触发查询和以下代码。
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        //insert code
    }对于不同模板的问题,我可能建议使用两个GridViews。我已经这样做了,我有两组不同的结果。如果他们选择一个dropdownItem,它会隐藏GridView1并显示GridView2 (在查询GridView2.SqlDataSource时)。
现在,您是否正在基于dropdown查询不同的SQL表?或者它们是从同一个地方查询的?
https://stackoverflow.com/questions/28701032
复制相似问题