코드 뒤에 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에서 뭔가가 누락 되었습니까? 아마 일부 선택 매개 변수?