2015-08-26 4 views
0

У меня есть gridview DevExpress, и я связываю datasource с кодом позади (C#). Мое действие работает правильно, но когда я использую rowfilter, это не так.Ошибка с действием строки в DevExpress Gridview

Я думаю, что мой аргумент команды, который отправляет информацию на мой datasource, неверен.

Мой идентификатор в строке 1 равен 1, а мой идентификатор в строке 13 должен быть 13, но после строки rowfilter и нажмите кнопку (строка команды) в строке 13, мой идентификатор, который отправляет код позади (аргумент команды), равен 1 !

Как получить идентификатор из строки (GridView Devexpress)?

Мой GridView:

<dx:ASPxGridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowCommand="gv_RowCommand" OnDataBinding="gv_DataBinding"   
     ClientInstanceName="gv" KeyFieldName="Id" 
     Width="100%"> 
     <Columns> 
      <dx:GridViewDataTextColumn Caption="" CellStyle-HorizontalAlign="Center" VisibleIndex="0" Width="12%"> 

       <DataItemTemplate> 
        <asp:LinkButton ID="btnconfirm" Text="Print" Width="70px" CssClass="btn btn-primary btn-small" ForeColor="#cc0000" CommandArgument='<%# Eval("Id") %>' 
         CommandName="print" runat="server" 
         OnClientClick="return confirm('Print?');"> 
        </asp:LinkButton> 

       </DataItemTemplate> 
       <HeaderStyle HorizontalAlign="center" /> 
      </dx:GridViewDataTextColumn> 

     </Columns> 

     <SettingsPager PageSize="80"> 
     </SettingsPager> 
     <Settings ShowFilterRow="true" /> 

    </dx:ASPxGridView> 

Мой связывании код:

 protected void Page_Load(object sender, EventArgs e) 
     { 
     if (!IsPostBack) 
     { 
      refreshGrid(); 
      gv.DataBind(); 
     } 
    } 


    protected void gv_DataBinding(object sender, EventArgs e) 
    { 
     refreshGrid(); 
    } 


    protected void gv_RowCommand(object sender,  DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e) 
    { 
     if (e.CommandArgs.CommandName == "print") 
     { 
      String _ID = e.CommandArgs.CommandArgument.ToString(); 

     } 
    } 

     private void refreshGrid() 
     { 
     DataClasses1DataContext m = new DataClasses1DataContext(); 

      var q = from p in m.TblUserElectronics.AsQueryable() 
       from w in m.ViewPersonCarRelations 
       where p.CID == w.CarId 
       select new 
       { 
        p.Id, 
        p.Enabled, 
        CodeTaxi = w.Code_Taxi 
       }; 

     gv.DataSource = q; 

    } 
+0

Не могли бы вы выслать какой-нибудь код? Например, обработчик или «код C# C#», возможно, вы не получите '' rowid'', а другое целочисленное значение. –

+0

@FlorianNeiss Весь мой код верен, я уверен. Проблема заключается в использовании rowfilter. Когда я использую его, Gridview повторяется и что-то не так! – mosyflasher

+0

@FlorianNeiss Сообщение отредактировано – mosyflasher

ответ

0

Javascript Функции:

function gv_CustomButton_Click(s, e) { 
      switch (e.buttonID) { 
       case "cmdPrint": 
        if (confirm("Print?")) { 
         s.GetRowValues(e.visibleIndex, 'ID', PrintCommand); 
        } 
      } 
     } 

     function PrintCommand(values) { 
      var ID = values; //this will give u actual ID. 
      //put your actions here 
     } 

Модифицированный DevExpress GridView:

<dx:ASPxGridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowCommand="gv_RowCommand" OnDataBinding="gv_DataBinding"   
    ClientInstanceName="gv" KeyFieldName="Id" Width="100%"> 
    <ClientSideEvents CustomButtonClick="gv_CustomButton_Click" /> 
    <Columns> 

    <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Width="12%" Caption="Actions" CellStyle-VerticalAlign="Top" Visible="false" ShowInCustomizationForm="true"> 
    <CustomButtons> 
       <dx:GridViewCommandColumnCustomButton ID="cmdPrint" Image-ToolTip="Print" CssClass="btn btn-primary btn-small">       
       </dx:GridViewCommandColumnCustomButton>          
    </CustomButtons> 
    <HeaderStyle HorizontalAlign="center" /> 
    </dx:GridViewCommandColumn>  
    </Columns> 
    <SettingsPager PageSize="80"> 
    </SettingsPager> 
    <Settings ShowFilterRow="true" /> 
    </dx:ASPxGridView>