#asp.net
#asp.net
Вопрос:
У меня есть проект по системе подбора персонала. В этом проекте у меня есть gridview, который содержит такие сведения, как название вакансии, название компании, название отдела и т.д. Теперь я хочу, чтобы в названии вакансии была гиперссылка, и когда пользователь нажимает на название вакансии, он должен показывать критерии для этой вакансии в другой таблице без обновления этой страницы. Это означает, что я должен поддерживать одну сетку внутри другой, но я не знаю, как этого добиться. Может ли кто-нибудь подсказать мне, пожалуйста???
Ответ №1:
Я сделал нечто подобное с использованием плагина Colorbox.
Это работает, когда вы знаете, что ссылки приведут к сеткам, которые могут быть предварительно скомпилированы на странице при ее загрузке.
Если всплывающему окну разрешено отображать сетку, то это может быть вашим вариантом.
a) установите на своей странице заполнитель для хранения сгенерированного html-кода. Вам понадобятся уникальные идентификаторы для каждой из ваших ссылок.
б) на основе кода я создаю сетку.
—снип—
Dim mystat As New TableCell With {.Text = "<a href='#' class='" amp; texttoappear amp; h amp; i amp; j amp; "'>" amp; mycount amp; "</a>", .HorizontalAlign = HorizontalAlign.Center}
myrow.Cells.Add(mystat)
prepareminidataset(myoraclefilter.ToString, (texttoappear amp; h amp; i amp; j).ToString)
—снип—
Привязка ведет на ту же страницу, более важным является класс, который я создаю, поскольку это класс, используемый плагином colorbox, чтобы определить, какую сетку ему нужно отображать.
Prepareminidataset — это функция, с помощью которой я извлекаю детали из серверной части базы данных (возможно, вам это не понадобится). Уникальная комбинация texttoappear amp; h amp; i amp; j становится строкой «ссылки«, используемой позже в моих функциях. (h, i amp; j — это мои позиции в сетке, поэтому каждое поле уникально)
c) I) Затем я создаю datagrid для отображения с помощью функции, используя извлеченные данные из базы данных в качестве dataset ds
Private Sub prepareminigrid(ByVal reference As String, ByRef myds As DataSet)
Dim Itemheader As Control = LoadControl("warrantydetailgrid.ascx")
Dim thegrid As GridView = CType(Itemheader.FindControl("mygrid"), GridView)
thegrid.DataSource = myds
thegrid.DataBind()
myhiddenpopups.Controls.Add(New LiteralControl("<div id='" amp; reference amp; "' style='padding:10px; background:#fff;'> "))
myhiddenpopups.Controls.Add(Itemheader)
myhiddenpopups.Controls.Add(New LiteralControl("</div>"))
If Not strScript.ToString.Contains("$('." amp; reference amp; "').colorbox({width:'50%', inline:true, href:'#" amp; reference amp; "'});") Then
strScript.AppendLine("$('." amp; reference amp; "').colorbox({width:'50%', inline:true, href:'#" amp; reference amp; "'});")
End If
End Sub
II) myhiddenpopups является моим заполнителем на странице aspx, куда я добавляю HTML-код (чтобы colorbox мог извлекать его, когда я нажимаю на привязку
III) наконец, strscript — это startupscript, который добавит различные функции colorbox с их уникальным тегом (=reference) в запускаемый javascript.
Итак, на что это похоже? Это сетка построения с тегами привязки
Это сетка, которая отображается, когда пользователь нажимает на ссылку
на главной странице.aspx вам нужен заполнитель, данные которого не будут отображаться
Результат скомпилированной страницы, когда ‘prepareminigrid’ запущен для каждого из якорей, которые ему необходимо создать;
Вы можете увидеть уникальные идентификаторы DIV для каждого из якорей (это то, что функция colorbox будет искать во встроенном HTML-коде) и таблицы ниже
Недостатком является то, что ваши предварительно загруженные данные должны быть относительно небольшими. Если у вас есть таблица с сотнями строк, время загрузки вашей страницы увеличится, и в конечном итоге пользователь получит предупреждающее сообщение «выполнение скрипта занимает много времени».
надеюсь, это поможет
K
Ответ №2:
Дорогой друг, я использую gridview внутри списка данных, поэтому таким же образом вы можете использовать grid view внутри gridview. Вот пример кода
Код .aspx
<asp:DataList ID="dl_College" runat="server" OnItemCommand="dl_College_ItemCommand"
OnItemDataBound="dl_College_ItemDataBound">
<ItemTemplate>
<fieldset>
<asp:GridView ID="grdCorse" runat="server" AutoGenerateColumns="false" CssClass="text12_d"
Width="100%">
<HeaderStyle BackColor="#244e7e" ForeColor="#f7f7f7" />
<RowStyle CssClass="gridview-row" />
<Columns>
<asp:TemplateField HeaderText="Stream Name">
<HeaderStyle CssClass="grdsize" />
<ItemStyle Width="42%" />
<ItemTemplate>
<span class="text12_d">
<%#Eval("StreamName")%>
</span>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Seats">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="10%" />
<ItemTemplate>
<%#Eval("StreamSeats")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Duration">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="10%" />
<ItemTemplate>
<%#Eval("StreamDuration")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Fee">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="15%" />
<ItemTemplate>
<asp:Label ID="lblStreamFee" runat="server" Text='<%#Eval("StreamFees")%>' Visible="false"></asp:Label>
<asp:ImageButton ID="imgLock" runat="server" PostBackUrl='<%# String.Format("{0}{1}","Login.aspx?ClgId=" , Eval("CollegeId")) %>'
CausesValidation="false" ImageUrl="~/images/Lock.png" Width="30" Height="20" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Mode">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="10%" />
<ItemTemplate>
<%#Eval("StreamMode")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</fieldset>
<br />
<asp:Panel ID="pnlCollegeRank" runat="server">
<fieldset>
<legend class="Legend_Header"><strong>College Rank</strong></legend>
<asp:Panel ID="pnlImage" runat="server" Visible="false">
<table width="100%">
<tr>
<td style="width: 100%;" class="Main_StripCollegeRank">
To check college rank, please login
</td>
<td style="float: right; background-color: #3b5998;">
<asp:ImageButton ID="imgLock" PostBackUrl='<%# String.Format("{0}{1}","Login.aspx?Collegeid=" , Eval("CollegeId")) %>'
CausesValidation="false" ImageUrl="~/images/Lock.png" runat="server" />
</td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="pnlRank" runat="server" Visible="false">
<span style="float: left; padding-left: 6px; width: auto">
<asp:GridView ID="grdCollegeRank" runat="server" AutoGenerateColumns="false" CssClass="text12_d"
Width="">
<HeaderStyle ForeColor="White" />
<RowStyle CssClass="gridview-row" />
<AlternatingRowStyle BackColor="#fffbfd" />
<Columns>
<asp:TemplateField HeaderText="">
<HeaderTemplate>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr style="background-color: #244e7e">
<td style="width: 100%; background-color: #244e7e; font-size: 13px; font-weight: bold;
color: white; padding-left: 3px" colspan="2" align="left">
College Rank in
<asp:Label ID="lblYear" runat="server" Text="2011" ForeColor="white" Font-Size="13px"
Font-Bold="true"></asp:Label>
</td>
</tr>
<tr>
<td style="width: auto; color: #244e7e; text-align: left;" class="grid_HeaderRank">
Source
</td>
<td style="width: auto; color: #244e7e; text-align: right;" class="grid_HeaderRank">
Rank
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td style="width: auto;" align="left" class="text12_d">
<asp:Label ID="lblSource" runat="server" Text='<%#Eval("SourceName")%>'></asp:Label>
</td>
<td style="width: auto; text-align: right; padding-right: 16px" class="text12_d">
<asp:Label ID="lblRank" runat="server" Text='<%#Eval("OverallRank")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</span><span style="float: left; padding-left: 6px; width: auto">
<asp:GridView ID="grdCollegeRank1" runat="server" AutoGenerateColumns="false" CssClass="text12_d"
Width="">
<HeaderStyle ForeColor="White" />
<RowStyle CssClass="gridview-row" />
<AlternatingRowStyle BackColor="#fffbfd" />
<Columns>
<asp:TemplateField HeaderText="">
<HeaderTemplate>
<table width="100%">
<tr style="background-color: #244e7e">
<td style="width: 100%; background-color: #244e7e; font-size: 13px; font-weight: bold;
color: white; padding-left: 3px" colspan="2" align="left">
College Rank in
<asp:Label ID="lblYear" runat="server" Text="2010" ForeColor="white" Font-Size="13px"
Font-Bold="true"></asp:Label>
</td>
</tr>
<tr>
<td style="width: auto; color: #244e7e; text-align: left;" class="grid_HeaderRank">
Source
</td>
<td style="width: auto; color: #244e7e; text-align: right;" class="grid_HeaderRank">
Rank
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="100%">
<tr>
<td style="width: auto;" align="left" class="text12_d">
<asp:Label ID="lblSource" runat="server" Text='<%#Eval("SourceName")%>'></asp:Label>
</td>
<td style="width: auto; text-align: right; padding-right: 16px" class="text12_d">
<asp:Label ID="lblRank" runat="server" Text='<%#Eval("OverallRank")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</span><span style="float: left; padding-left: 6px; width: auto">
<asp:GridView ID="grdCollegeRank2" runat="server" AutoGenerateColumns="false" CssClass="text12_d"
Width="">
<HeaderStyle ForeColor="White" />
<RowStyle CssClass="gridview-row" />
<AlternatingRowStyle BackColor="#fffbfd" />
<Columns>
<asp:TemplateField HeaderText="">
<HeaderTemplate>
<table width="100%">
<tr style="background-color: #244e7e">
<td style="width: 100%; background-color: #244e7e; font-size: 13px; font-weight: bold;
color: white; padding-left: 3px" colspan="2" align="left">
College Rank in
<asp:Label ID="lblYear" runat="server" Text="2009" ForeColor="white" Font-Size="13px"
Font-Bold="true"></asp:Label>
</td>
</tr>
<tr>
<td style="width: auto; color: #244e7e; text-align: left;" class="grid_HeaderRank">
Source
</td>
<td style="width: auto; color: #244e7e; text-align: right;" class="grid_HeaderRank">
Rank
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="100%">
<tr>
<td style="width: auto;" align="left" class="text12_d">
<asp:Label ID="lblSource" runat="server" Text='<%#Eval("SourceName")%>'></asp:Label>
</td>
<td style="width: auto; text-align: right; padding-right: 16px" class="text12_d">
<asp:Label ID="lblRank" runat="server" Text='<%#Eval("OverallRank")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</span><span style="float: right; padding-right: 0px; width: 50%">
<asp:LinkButton ID="lnkCollegeRank" CommandName="ViewMore" CausesValidation="false"
runat="server" CssClass="ReadMore">View More...</asp:LinkButton>
</span>
</asp:Panel>
</fieldset>
<br />
</asp:Panel>
<fieldset>
<legend class="Legend_Header"><strong>Infrastructure</strong></legend>
<br />
<asp:GridView ID="grdHostelInformation" runat="server" AutoGenerateColumns="false"
CssClass="text12_d" Width="100%">
<HeaderStyle BackColor="#244e7e" ForeColor="#f7f7f7" />
<RowStyle CssClass="gridview-row" />
<Columns>
<asp:TemplateField HeaderText="Hostel">
<ItemStyle Width="10%" />
<HeaderStyle CssClass="grdsize" />
<ItemTemplate>
<a href="#" target="_blank" class="text12_d">
<%#Eval("CollegeHostelInfo")%>
</a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Location">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelLocation")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Internet">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelInteranet")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Laundry">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelLaundry")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Power Backup">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelElectricityBackup")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="AC">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelAC")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Charges">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelCharges")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Occupancy">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%#Eval("HostelOccupacy")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</fieldset>
<br />
<fieldset>
<legend class="Legend_Header"><strong>Contact Details</strong></legend>
<ul style="vertical-align:top; background-color:#f4faff;">
<li class="textLiExam">
<strong style="font-weight:bold; font-size:14px; color:Black;">Address amp;nbsp;:</strong>
<%# Eval("CollegeStreet")%>
<%# Eval("CollegeDistrict")%>
<%# Eval("StateName")%>
<%# Eval("CollegePinCode")%>
</li>
<li class="textLiExam">
<strong style="font-weight:bold; font-size:14px; color:Black;">Email Id amp;nbsp;amp;nbsp;amp;nbsp;:amp;nbsp;</strong>
<%# Eval("CollegePersonEmail")%>
</li>
<li class="textLiExam">
<strong style="font-weight:bold; font-size:14px; color:Black;">Website amp;nbsp;amp;nbsp;:amp;nbsp;</strong>
<a href='<%# String.Format("{0}{1}","http://" , Eval("CollegeWebsite")) %>'
target="_blank" class="textLiExam">
<%# Eval("CollegeWebsite")%>
</a>
</li>
<li class="textLiExam">
<strong style="font-weight:bold; font-size:14px; color:Black;">Phone amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;:amp;nbsp;</strong>
<%# Eval("CollegePhone1")%>
,amp;nbsp;
<%# Eval("CollegePhone2")%>
</li>
<li class="textLiExam">
<strong style="font-weight:bold; font-size:14px; color:Black;">Fax amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;:amp;nbsp;</strong>
<%# Eval("CollegeFax")%>
</li>
</ul>
</fieldset>
</ItemTemplate>
</asp:DataList>
Вот код, как вычесть представление сетки из списка данных
protected void dl_College_ItemDataBound(object sender, DataListItemEventArgs e)
{
GridView grdCollegeRank = (GridView)e.Item.FindControl("grdCollegeRank");
GridView grdCollegeRank1 = (GridView)e.Item.FindControl("grdCollegeRank1");
GridView grdCollegeRank2 = (GridView)e.Item.FindControl("grdCollegeRank2");
Panel pnlRank = (Panel)e.Item.FindControl("pnlCollegeRank");
string sqlquery1 = "select top 1 * from dbo.CollegeCourseStream,dbo.University where dbo.CollegeCourseStream.UniversityId = dbo.University.UniversityId and CollegeCourseStream.collegeId='" Request.QueryString["Collegeid"] "'";
DataTable dt_Vendor1 = lk.dt_Select(sqlquery1);
if (dt_Vendor1.Rows.Count > 0)
{
lblAffiliation.Text = dt_Vendor1.Rows[0]["UniversityName"].ToString();
}
DataSet sdr = new DataSet();
sdr = ObjClsCollege.GetCollegeRank(Convert.ToInt32(Request.QueryString["CollegeId"]));
grdRank = sdr.Tables[0].Rows.Count;
if (sdr.Tables[0].Rows.Count > 0)
{
grdCollegeRank.DataSource = sdr.Tables[0];
grdCollegeRank.DataBind();
}
else
{
grdCollegeRank.Visible = false;
}
string sqlquery2 = "select * from dbo.tblRankSource,dbo.tblRank where dbo.tblRank.SourceId=dbo.tblRankSource.SourceId and dbo.tblRank.CollegeId='" Convert.ToInt32(Request.QueryString["Collegeid"].ToString()) "' and tblRank.Year='" 2010 "' order by Year DESC";
DataSet sdr2 = lk.selectDate_Source(sqlquery2);
grdRank1 = sdr2.Tables[0].Rows.Count;
if (sdr2.Tables[0].Rows.Count > 0)
{
grdCollegeRank1.DataSource = sdr2.Tables[0];
grdCollegeRank1.DataBind();
}
else
{
grdCollegeRank1.Visible = false;
}
string sqlquery3 = "select * from dbo.tblRankSource,dbo.tblRank where dbo.tblRank.SourceId=dbo.tblRankSource.SourceId and dbo.tblRank.CollegeId='" Convert.ToInt32(Request.QueryString["Collegeid"].ToString()) "'and tblRank.Year='" 2009 "' order by Year DESC";
DataSet sdr3 = lk.selectDate_Source(sqlquery3);
grdRank2 = sdr3.Tables[0].Rows.Count;
if (sdr3.Tables[0].Rows.Count > 0)
{
grdCollegeRank2.DataSource = sdr3.Tables[0];
grdCollegeRank2.DataBind();
}
else
{
grdCollegeRank2.Visible = false;
}
if (Request.QueryString["CollegeId"] != null)
{
GridView currChk = (GridView)e.Item.FindControl("grdCorse");
ObjClsCollege = new ClsCollege();
DS = new DataSet();
ImageMap CollegeImage = (ImageMap)e.Item.FindControl("CollegeImage");
string sqlquery = "Select * from College,State,Course where College.stateid=State.stateid and College.CourseId=Course.CourseId and College.CollegeId='" Request.QueryString["Collegeid"] "'";
DataTable dt_Vendor = lk.dt_Select(sqlquery);
if (dt_Vendor.Rows.Count > 0)
{
CollegeImage.ImageUrl = "College Image\" dt_Vendor.Rows[0]["CollegeImage"].ToString();
//CollegeImage.ImageUrl = dt_Vendor.Rows[0]["CollegeImage"].ToString();
}
DS = ObjClsCollege.GetTheCollegeCorse(Convert.ToInt32(Request.QueryString["CollegeId"]));
if (DS.Tables[0].Rows.Count > 0)
{
currChk.DataSource = DS.Tables[0];
currChk.DataBind();
}
foreach (GridViewRow Row in currChk.Rows)
{
Label lblStreamFee = ((Label)Row.FindControl("lblStreamFee"));
Image imgLock = ((Image)Row.FindControl("imgLock"));
lblStreamFee.Visible = true;
imgLock.Visible = false;
}
}
}
else
{
}
чтобы вы могли найти gridview внутри datalist