2012-09-19 4 views
1

나는 다음의 gridview 있습니다방법 LINQ로 채워지

   <asp:GridView ID="gvNOVs" runat="server" AllowPaging="true" AllowSorting="true" PageSize="10" 
      AutoGenerateColumns="false" Width="100%" BackColor="Transparent" GridLines="None" 
      RowStyle-HorizontalAlign="Left" PagerSettings-Mode="NumericFirstLast" DataKeyNames="NOVID" 
      OnRowDataBound="gvNOVs_RowDataBound" 
      OnRowCommand="gvNOVs_OnSelectRow" 
      OnPageIndexChanging="gvNOVs_PageIndexChanging" 
      OnSorting="gvNOVs_OnSorting" 
      > 
      <AlternatingRowStyle CssClass="alternateItemStyle" /> 
      <HeaderStyle CssClass="headerStyle" /> 
      <PagerSettings Mode="NumericFirstLast" /> 
      <RowStyle CssClass="itemStyle" /> 

      <Columns> 
       <asp:BoundField DataField="NOVID" HeaderText="NOVID" InsertVisible="false" ReadOnly="true" Visible="false"/> 
       <asp:BoundField DataField="NOVNumber" HeaderText="NOV Number" SortExpression="NOVNumber" 
        ItemStyle-HorizontalAlign="Center" /> 
       <asp:BoundField DataField="NOVDate" HeaderText="NOV Date" SortExpression="NOVDate" 
        ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" /> 
       <asp:BoundField DataField="CompanyName" HeaderText="Company Name" SortExpression="CompanyName" 
        ItemStyle-HorizontalAlign="Center"></asp:BoundField> 
       <asp:BoundField DataField="CargoTankID" HeaderText="Cargo Tank Number" SortExpression="CargoTankNumber" 
        ItemStyle-HorizontalAlign="Center" /> 
       <asp:BoundField DataField="ARBInspectorFirstName" HeaderText="InspectorFirstName" 
        SortExpression="InspectorFirstName" ItemStyle-HorizontalAlign="Center" /> 
       <asp:BoundField DataField="ARBInspectorLastName" HeaderText="InspectorLastName" SortExpression="InspectorLastName" 
        ItemStyle-HorizontalAlign="Center" /> 
       <asp:BoundField DataField="ViolationName" HeaderText="Violation Name" SortExpression="ViolationName" 
        ItemStyle-HorizontalAlign="Center" /> 
      </Columns> 
     </asp:GridView> 

그것은 LINQ 사용하여 페이지로드 이벤트에 채워되고있다 : 나는 클릭하면

   var NOVs = from n in db.CT_NOVs 
        join i in db.CT_Inspectors on n.ARBInspectorID equals i.CTInspectorID 
        join v in db.CT_ViolationTypes on n.ViolationTypeID equals v.ViolationTypeID 
        join t in db.CT_Tanks on n.CargoTankID equals t.CargoTankID 
        join c in db.CT_Companies on t.CompanyID equals c.CompanyID 
        orderby n.NOVNumber descending 
        select new 
        { 
         n.NOVID, 
         n.NOVNumber, 
         NOVDate = n.NOVDate.Value.ToShortDateString(), 
         ARBInspectorFirstName = i.FirstName, 
         ARBInspectorLastName = i.LastName, 
         v.ViolationName, 
         t.CargoTankID, 
         c.CompanyName 
        }; 

     this.gvNOVs.DataSource = NOVs; 
     this.gvNOVs.DataBind(); 

을 행, 나는이 메서드를 호출 :

protected void gvNOVs_OnSelectRow(object sender, GridViewCommandEventArgs e) 
{ 


} 

나는 datakeyValue하는 방법을 잘 모르겠어요을, 나는에 대한 NOVID을 얻으려면 클릭 한 행 e.CommandArgument.ToString()을 얻으면 CargoTankID에 대한 가치가 부여됩니다. 왜 그것이 저에게 가치를 부여하는지 알 수 없습니다.

아무도 선택한 행에 대해 NOVID를 얻는 방법을 알고 있습니까?

답변

0

이것은 작동 할 수 있습니다.

  1. 데이터 소스
  2. 에게 인덱스에서 데이터 항목을 가져 오기

    INT 인덱스를 얻기 CommandSource

  3. 에서 그리드 자체를 얻기 CommandArgument
  4. 의 인덱스를 가져 = int.Parse ((문자열) e.CommandArgument); var grid = (GridView) e.CommandSource; var data = (IList) grid.DataSource; var NOVID = 데이터 [인덱스] .NOVID;

0

당신은 그것이 null이 말한다, 나는 많은 변화를 시도했다 작동하고 있지 않습니다

string dataKeyValue = (string)this.gvNOVs.SelectedDataKey.Value; 
+0

같은 것을 시도해야한다 – user1220099