2017-11-02 2 views
0

코드 뒤에 sqldatasource를 사용하여 채우는 Asp.net C# 웹 응용 프로그램에 gridview가 있습니다. 있는 gridview 엄마는Asp.net C# WebForms 응용 프로그램에서 gridview의 행을 선택할 수 없습니다.

<telerik:RadGrid ID="rgAssnmtList" runat="server" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" Skin="Default" OnSelectedIndexChanged="rgAssnmtList_SelectedIndexChanged" OnPreRender="rgAssnmtList_PreRender" OnItemCommand="rgAssnmtList_ItemCommand"> 
 
       <ClientSettings AllowDragToGroup="True" AllowColumnsReorder="True" ReorderColumnsOnClient="True"></ClientSettings> 
 
       <MasterTableView DataKeyNames="assnmtIdPk"> 
 
        <Columns> 
 
         <telerik:GridButtonColumn ButtonType="LinkButton" CommandName="Select" Text="Select" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridButtonColumn> 
 
         <telerik:GridBoundColumn DataField="assnmtIdPk" ReadOnly="True" HeaderText="assnmtIdPk" SortExpression="assnmtIdPk" UniqueName="assnmtIdPk" DataType="System.Int32" FilterControlAltText="Filter assnmtIdPk column"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="Id" ReadOnly="true" HeaderText="Id" SortExpression="Id" UniqueName="Id" FilterControlAltText="Filter Id column"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="clientIdPk" ReadOnly="true" HeaderText="clientIdPk" SortExpression="clientIdPk" UniqueName="clientIdPk" DataType="System.Int32" FilterControlAltText="Filter clientIdPk column"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="clientNm" ReadOnly="true" HeaderText="Client" SortExpression="clientNm" UniqueName="clientNm" FilterControlAltText="clientNm" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="assnmtClmNo" ReadOnly="true" HeaderText="Claim" SortExpression="assnmtClmNo" UniqueName="assnmtClmNo" FilterControlAltText="assnmtClmNo" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="invNo" ReadOnly="true" HeaderText="Invoice" SortExpression="invNo" UniqueName="invNo" FilterControlAltText="invNo" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="assnmtCrtdDt" ReadOnly="true" HeaderText="Rcd. Date" SortExpression="assnmtCrtdDt" UniqueName="assnmtCrtdDt" FilterControlAltText="assnmtCrtdDt" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="inspDt" ReadOnly="true" HeaderText="Inspection Date/Time" SortExpression="inspDt" UniqueName="inspDt" FilterControlAltText="inspDt" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="stat" ReadOnly="true" HeaderText="Status" SortExpression="stat" UniqueName="stat" FilterControlAltText="stat" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="FirstName" ReadOnly="true" HeaderText="First Name" SortExpression="FirstName" UniqueName="FirstName" FilterControlAltText="FirstName" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
         <telerik:GridBoundColumn DataField="LastName" ReadOnly="true" HeaderText="Last Name" SortExpression="LastName" UniqueName="LastName" FilterControlAltText="LastName" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="true"></telerik:GridBoundColumn> 
 
        </Columns> 
 
       </MasterTableView> 
 
      </telerik:RadGrid>

의 SqlDataSource은 다음과 같습니다

protected void Page_Load(object sender, EventArgs e) 
 
     { 
 
      //Identify the current user 
 
      crntUserId.Value = HttpContext.Current.User.Identity.GetUserId(); 
 
      //crntUserIdLbl.Text = HttpContext.Current.User.Identity.GetUserId(); 
 

 
      //populate a hidden control with the current user's ID 
 
      hdnCrntUsr.Value = HttpContext.Current.User.Identity.GetUserId(); 
 
      string currentUserId = hdnCrntUsr.Value; 
 

 
      //populate a hidden control with the current user's company Id and another with the company name 
 
      SqlDataSource sdsAssnmtList = new SqlDataSource(); 
 
      sdsAssnmtList.ID = "sdsAssnmtList"; 
 
      this.Page.Controls.Add(sdsAssnmtList); 
 
      sdsAssnmtList.DataSourceMode = SqlDataSourceMode.DataSet; 
 
      sdsAssnmtList.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
 
      sdsAssnmtList.SelectCommand = "SELECT anu.Id, anu.FirstName, anu.LastName, uc.clientIdFk, c.clientNm FROM AspNetUsers anu INNER JOIN AspNetUserComps uc ON anu.Id = uc.anuIdFk INNER JOIN clients c ON c.clientIdPk = uc.clientIdFk WHERE Id = @Id"; 
 
      sdsAssnmtList.SelectParameters.Clear(); 
 
      sdsAssnmtList.SelectParameters.Add("Id", currentUserId); 
 

 
      System.Data.DataView assnmtListDV = (DataView)sdsAssnmtList.Select(DataSourceSelectArguments.Empty); 
 
      DataTable assnmtListDT = assnmtListDV.ToTable(); 
 
      DataSet assnmtListDS = new DataSet(); 
 
      assnmtListDS.Tables.Add(assnmtListDT); 
 

 
      DataRow row = assnmtListDT.Rows[0]; 
 
      hdnCompId.Value = row["clientIdFk"].ToString(); 
 
      hdnCompNm.Value = row["clientNm"].ToString(); 
 

 

 
      //populate the grid based on the role and company of the current user 
 
      //can see all of the assignments in the system 
 
      if (HttpContext.Current.User.IsInRole("AKOB") || (HttpContext.Current.User.IsInRole("aQA") || (HttpContext.Current.User.IsInRole("aMgr")))) 
 
      { 
 
       SqlDataSource sdsAkobAssnmtList = new SqlDataSource(); 
 
       sdsAkobAssnmtList.ID = "sdsAkobAssnmtList"; 
 
       this.Page.Controls.Add(sdsAkobAssnmtList); 
 
       sdsAkobAssnmtList.DataSourceMode = SqlDataSourceMode.DataSet; 
 
       sdsAkobAssnmtList.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
 
       sdsAkobAssnmtList.SelectCommand = "SELECT \t a.assnmtIdPk, c.clientIdPk, c.clientNm, a.assnmtClmNo, a.assnmtCrtdDt, invs.invNo, " + 
 
                "i.inspDt, s.stat, anu.FirstName, anu.LastName " + 
 
                "FROM assnmts a " + 
 
                "INNER JOIN clients c " + 
 
                " ON a.assnmtClientId = c.clientIdPk " + 
 
                "LEFT JOIN insps i " + 
 
                " ON a.assnmtIdPk = i.assntIdFk " + 
 
                "LEFT JOIN invoices invs " + 
 
                " ON a.assnmtIdPk = invs.assnmtIdFk " + 
 
                "INNER JOIN assnmtStats aStats " + 
 
                " ON a.assnmtIdPk = aStats.assnmtIdFk " + 
 
                "INNER JOIN statuses s " + 
 
                " ON aStats.assnmtStat = s.statIdPk " + 
 
                "INNER JOIN(" + 
 
                "   SELECT a2.assnmtIdPk, MAX(aStats2.assnmtStatDtSet) AS MaxDate " + 
 
                "   FROM assnmts a2 " + 
 
                "   INNER JOIN assnmtStats aStats2 " + 
 
                "    ON a2.assnmtIdPk = aStats2.assnmtIdFk " + 
 
                "   GROUP BY a2.assnmtIdPk " + 
 
                "   ) mdt " + 
 
                " ON a.assnmtIdPk = mdt.assnmtIdPk AND aStats.assnmtStatDtSet = mdt.MaxDate " + 
 
                "INNER JOIN repAssnmts ra " + 
 
                " ON a.assnmtIdPk = ra.assnmtIdFk " + 
 
                "LEFT JOIN AspNetUsers anu " + 
 
                " ON anu.Id = ra.repAssnmtRep " + 
 
                "INNER JOIN(" + 
 
                "   SELECT a3.assnmtIdPk, Max(ra2.repAssnmtCrtdDt) AS MaxDate2 " + 
 
                "   FROM assnmts a3 " + 
 
                "INNER JOIN repAssnmts ra2 " + 
 
                " ON a3.assnmtIdPk = ra2.assnmtIdFk " + 
 
                "GROUP BY a3.assnmtIdPk " + 
 
                ") mdt2 " + 
 
                " ON a.assnmtIdPk = mdt2.assnmtIdPk AND ra.repAssnmtCrtdDt = mdt2.MaxDate2"; 
 
       sdsAkobAssnmtList.SelectParameters.Clear(); 
 

 
       rgAssnmtList.DataSource = sdsAkobAssnmtList; 
 
       rgAssnmtList.DataBind(); 
 

 
       assnmtMgrTabStrip.Visible = true; 
 

 
       rgAssnmtList.MasterTableView.GetColumn("assnmtIdPk").Display = false; 
 
       rgAssnmtList.MasterTableView.GetColumn("Id").Display = false; 
 
       rgAssnmtList.MasterTableView.GetColumn("clientIdPk").Display = false; 
 
      }}

있는 gridview는 잘 채워집니다. 나는 정확한 기록을 얻는다. "선택"LinkButton을 클릭하면 행이 선택되고 다른 gridview는 rgAssnmtList의 기본 키 (assnmtIdPk)를 기반으로하는 데이터로 채워집니다. 이것은 잘 작동합니다.

<telerik:RadGrid ID="rgJournals" runat="server" DataSourceID="sdsRgJourns" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" Skin="Default"> 
 
         <ClientSettings AllowDragToGroup="True" AllowColumnsReorder="True" ReorderColumnsOnClient="True"></ClientSettings> 
 
         <MasterTableView DataKeyNames="journalIdPk" DataSourceID="sdsRgJourns"> 
 
          <Columns> 
 
           <telerik:GridButtonColumn ButtonType="LinkButton" CommandName="Select" Text="Select"></telerik:GridButtonColumn> 
 
           <telerik:GridBoundColumn DataField="journalIdPk" ReadOnly="True" HeaderText="journalIdPk" SortExpression="journalIdPk" UniqueName="journalIdPk" DataType="System.Int32" FilterControlAltText="Filter journalIdPk column"></telerik:GridBoundColumn> 
 
           <telerik:GridBoundColumn DataField="assnmtIdFk" HeaderText="assnmtIdFk" SortExpression="assnmtIdFk" UniqueName="assnmtIdFk" DataType="System.Int32" FilterControlAltText="Filter assnmtIdFk column"></telerik:GridBoundColumn> 
 
           <telerik:GridBoundColumn DataField="journEntCrtdBy" HeaderText="journEntCrtdBy" SortExpression="journEntCrtdBy" UniqueName="journEntCrtdBy" FilterControlAltText="Filter journEntCrtdBy column"></telerik:GridBoundColumn> 
 
           <telerik:GridBoundColumn DataField="journEntCrtdDt" HeaderText="journEntCrtdDt" SortExpression="journEntCrtdDt" UniqueName="journEntCrtdDt" DataType="System.DateTime" FilterControlAltText="Filter journEntCrtdDt column"></telerik:GridBoundColumn> 
 
           <telerik:GridBoundColumn DataField="journTitle" HeaderText="journTitle" SortExpression="journTitle" UniqueName="journTitle" FilterControlAltText="Filter journTitle column"></telerik:GridBoundColumn> 
 
           <telerik:GridBoundColumn DataField="journEntry" HeaderText="journEntry" SortExpression="journEntry" UniqueName="journEntry" FilterControlAltText="Filter journEntry column"></telerik:GridBoundColumn> 
 
          </Columns> 
 
         </MasterTableView> 
 
        </telerik:RadGrid>

그리고 그것은의 SqlDataSource은 다음과 같습니다 :

새로운있는 gridview는

<asp:SqlDataSource ID="sdsRgJourns" runat="server" ConnectionString='<%$ ConnectionStrings:DefaultConnection %>' 
 
       SelectCommand="SELECT [journalIdPk], [assnmtIdFk], [journEntCrtdBy], [journEntCrtdDt], [journTitle], [journEntry] FROM [journals] WHERE ([assnmtIdFk] = @assnmtIdFk) ORDER BY [journEntCrtdDt] DESC"> 
 
       <SelectParameters> 
 
        <asp:ControlParameter ControlID="rgAssnmtList" PropertyName="SelectedValue" Name="assnmtIdFk" Type="Int32"></asp:ControlParameter> 
 
       </SelectParameters> 
 
      </asp:SqlDataSource>

내가 EXPE이 시점에서 ct를 클릭하여 새 그리드 뷰 (rgJournals)에서 "선택"버튼을 클릭하십시오. 그러나 행을 선택할 수 없으며 오류가 발생하지 않습니다.

rgAssnmtList에 대한 sqldatasource에서 뭔가가 누락 되었습니까? 아마 일부 선택 매개 변수?

답변

0

이 문제는 Telerik RadGrid에만 해당됩니다. asp : GridView를 사용하여 전환했을 때 예상대로 작동했습니다. 나는이 특정한 프로젝트를 위해 그들의 제품을 사용할 수 없을 것이다. 이 의견은이 제품과 함께 향후이 동일한 문제에 부딪히는 모든 사람에게 그대로 남습니다.