我使用Itemtemplate为每列创建了批量编辑gridview。非编辑模式的标签,编辑模式的文本框。但这只有在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查询并返回结果。这个结果显示在gridview中。但问题出现是因为从下拉列表中每个选定值的结果中的列数可能会有所不同。我想将gridview设置为可编辑(或只读)。这需要为每列定义两个模板。
所以我想知道如何动态完成,即根据sql返回的列数定义模板。
答案 0 :(得分:0)
首先,您可以触发查询并使用此事件跟踪代码。
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//insert code
}
对于不同模板的问题,我可能会建议使用两个GridView。我已经完成了这项工作,我有两组独立的结果。如果他们选择了dropdownItem,它会隐藏GridView1并显示GridView2(同时查询GridView2.SqlDataSource)。
现在您是否根据下拉列表查询不同的SQL表?或者他们是否在同一个地方查询?