2010-12-12 4 views
0

Спокойной ночи,Gridview группировка - с использованием gridviewheper

Я использовал gridviewhelper для группировки строк в виде сетки.

GridViewHelper helper = new GridViewHelper(this.Resultados); 
    helper.RegisterGroup("EntidadeNome", true, true); 
    helper.GroupHeader += new GroupEvent(helper_GroupHeader); 
    this.Resultados.DataSource = DT; 
    this.Resultados.DataBind(); 

Каждая строка в виде двух элементов, каждая из которых имеет флажок.

 <asp:GridView ID="Resultados" runat="server" AutoGenerateColumns="false" GridLines="None" 
         CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" 
         ShowHeader="false"> 
         <Columns> 
          <asp:BoundField DataField="EntidadeNome" SortExpression="EntidadeNome" /> 
          <asp:BoundField DataField="ID" HeaderText="IDLinhascompras" ItemStyle-CssClass="hidden" 
           HeaderStyle-CssClass="hidden" ItemStyle-HorizontalAlign="Center" /> 
          <asp:BoundField DataField="Artigo" HeaderText="Artigo" SortExpression="Artigo" ItemStyle-Width="50px" 
           ItemStyle-HorizontalAlign="Center" /> 
// Some BoundFieds here 
          <asp:TemplateField HeaderText="A" ItemStyle-Width="40px" SortExpression="A"> 
           <ItemTemplate> 
            <asp:CheckBox ID="A" Width="40" runat="server" /> 
           </ItemTemplate> 
           <ItemStyle HorizontalAlign="Center" /> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="R" ItemStyle-Width="40px" SortExpression="R"> 
           <ItemTemplate> 
            <asp:CheckBox ID="R" Width="40" runat="server" /> 
           </ItemTemplate> 
           <ItemStyle HorizontalAlign="Center" /> 
          </asp:TemplateField> 
         </Columns> 
         <EmptyDataTemplate> 
         <label>Sem resultados para apresentar</label> 
         </EmptyDataTemplate> 
        </asp:GridView> 

У меня возникли проблемы при поиске строк, в которых установлен флажок.

protected void EnviaArtigos_Click(object sender, EventArgs e) 
{ 

    CheckBox chkA, chkR; 

    foreach (GridViewRow dataItem in Resultados.Rows) 
    { 
     object rows; 

     chkA = (CheckBox)dataItem.FindControl("A"); 
     chkR = (CheckBox)dataItem.FindControl("R"); 

     if (chkA.Checked) 
     { 
      try 
      { 
       Motor.DSO.BDAPL.Execute("UPDATE LINHASCOMPRASSTATUS SET ESTADOTRANS = 'A' WHERE IDLINHASCOMPRAS ='" + dataItem.Cells[1].Text + "'", out rows, 
        -1); 
       this.Resultados.DataSource = null; 
       this.Resultados.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
     } 
     if (chkR.Checked) 
     { 
      try 
      { 
       Motor.DSO.BDAPL.Execute("UPDATE LINHASCOMPRASSTATUS SET ESTADOTRANS = 'R' WHERE IDLINHASCOMPRAS ='" + dataItem.Cells[1].Text + "'", out rows, -1); 
       this.Resultados.DataSource = null; 
       this.Resultados.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
     } 
    } 

Я вижу, при отладке, что по какой-то причине установлен флажок в строке, имеют заголовка группы, а затем, в строке, который effectibly выбран, этот флажок не установлен.

Итак, в нескольких словах, как я могу обойти строку groupheader и только искать флажки в других строках?

спасибо.

EDIT: Ошибка: Ошибка преобразования при преобразовании из символьной строки в uniqueidentifier.

+0

Может быть, вы должны сказать нам больше об этом GridViewHelper классе ... это не является частью framework –

+0

Я нашел класс здесь: http://www.agrinei.com/gridviewhelper/gridviewhelper_en.htm –

ответ

1

Отфильтруйте строки заголовка (и, возможно, нижнего колонтитула), проверив свойство TableSection GridViewRow. Синтаксис может быть немного (я в основном делать VB), но поставить что-то вроде этого после заявления ForEach ...

If (dataitem.TableSection != TableRowSection.TableHeader) { 
object rows; 
//Rest of the code goes here... 
} 
+0

Спасибо за помощь. Он работает в некоторых случаях, по какой-то причине, если я проверяю строку сразу же, ошибка все еще встречается, в остальных - нет. : \ –

Смежные вопросы