2015-02-24 4 views
0

Я создал массовое редактирование gridview, используя Itemtemplate для каждого столбца. Ярлык для режима без редактирования, Текстовое поле для режима редактирования. Но это работает только в том случае, если известна структура gridview (определение шаблонов в asp).Показать редактируемые Gridview, когда значение выбрано из раскрывающегося списка

<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

Результат, возвращаемый запросом sql, является ли он бесконечным? Я хочу сказать, что вы знаете верхний предел запроса, например, сколько столбцов должно иметь ваш gridview? – Anurag

+0

Нет, это не бесконечно. Нет столбцов, которые должны иметь gridview, не будет превышать 20. –

+0

Затем у вас есть gridview с 20 столбцами, попробуйте скрыть нежелательные столбцы, когда у вас есть определенное количество результатов из SQL-запроса. Я знаю, что это не очень просто. Вам нужно как-то получить количество столбцов и порядок столбцов, когда вы привязываете gridview. – Anurag

ответ

0

Прежде всего, вы можете вызвать запрос и следующий код с этим событием.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     //insert code 
    } 

Для решения различных шаблонов я мог бы предложить использовать два GridViews. Я сделал это, когда у меня есть два отдельных набора результатов. Если они выбрали dropdownItem, он скрывает GridView1 и отображает GridView2 (при запросе GridView2.SqlDataSource).

Теперь вы запрашиваете разные таблицы SQL на основе выпадающего списка? Или они спрашивают с того же места?

+0

Запрос из разных таблиц. Если я последую вашему подходу. Я должен был бы сделать около 15 Gridviews и соответствующим образом переключить видимость, что, я думаю, было бы слишком громоздким. –

+0

Я понимаю. Вы никогда не указали, сколько наборов результатов у вас будет. Вы комбинируете множество разных таблиц в одну таблицу перед запросом? Сначала вы можете создать представление в SQL. Затем запросите это представление и выберите, какие столбцы вы хотите и чего не хотите. Если это один запрос за таблицу, то я думаю, что установка нового источника данных будет чем-то интересным. Независимо от того, я не уверен, как организовано, было бы иметь 15 разных таблиц результатов, идущих к одному gridview. – terbubbs