[JQuery]取得ListView 選取列上的欄位值
前言:
這是工作上J妹遇到的一個小小需求,當J妹選取List View中的某一列,要取得該列欄位值做其他的處理,專案伙伴先前的作法,使用 :eq(n) 的方式取得,但J妹想嘗試其他的作法,不透過指定Index的方式,所以產出了下面的兩種方法,供大家參考
成果展現:
程式說明:
增加兩個TextBox裝取List View選取列的欄位值
<asp:TextBox ID="txtID" runat="server"></asp:TextBox> <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
專案伙伴的方法:使用Jquery位置選擇器 :eq(n)
於listview的ItemTemplate的程式碼如下:
<ItemTemplate>
<tr id="row" runat="server">
<td>
<%# Eval("ProductID")%>
</td>
<td>
<%# Eval("ProductName")%>
</td>
<td>
<%# Eval("QuantityPerUnit")%>
</td>
<td>
<%# Eval("UnitPrice")%>
</td>
</tr>
</ItemTemplate>
於aspx.cs註冊的javascript如下:
protected void Page_PreRender(object sender, EventArgs e)
{
string PageInitJS = @"
$(document).ready(function() {
//ListView的列被點選時將欄位值帶入HiddenField
$('#" + this.divListView.ClientID + @" tr').click(function() {
var $objTr = $(this);
$('#" + this.txtID.ClientID + @"').val($objTr.find('td:eq(0)').text());
$('#" + this.txtName.ClientID + @"').val($objTr.find('td:eq(1)').text());
});
});";
Page.ClientScript.RegisterStartupScript(Page.GetType(), Page.ClientID, PageInitJS, true);
}
J妹的方法一:使用Jquery CSS選擇器 E.C
說明:於TD加上CSS,給Jquery當尋找目標
於listview的ItemTemplate的程式碼如下:
<ItemTemplate>
<tr id="row" runat="server">
<td class="ProductID">
<%# Eval("ProductID")%>
</td>
<td class="ProductName">
<%# Eval("ProductName")%>
</td>
<td class="QuantityPerUnit">
<%# Eval("QuantityPerUnit")%>
</td>
<td class="UnitPrice">
<%# Eval("UnitPrice")%>
</td>
</tr>
</ItemTemplate> 於aspx.cs註冊的javascript如下:
protected void Page_PreRender(object sender, EventArgs e)
{
string PageInitJS = @"
$(document).ready(function() {
//ListView的列被點選時將欄位值帶入HiddenField
$('#" + this.divListView.ClientID + @" tr').click(function() {
var $objTr = $(this);
$('#" + this.txtID.ClientID + @"').val($objTr.find('td.ProductID').text());
$('#" + this.txtName.ClientID + @"').val($objTr.find('td.ProductName').text());
});
});";
Page.ClientScript.RegisterStartupScript(Page.GetType(), Page.ClientID, PageInitJS, true);
} J妹的方法二:使用Jquery 屬性選擇器 td[id$=ID結尾]
說明:使用label去繫結資料,JQuery去尋找TD裡的SPAN含有指定ID結尾的值
於listview的ItemTemplate的程式碼如下:
於aspx.cs註冊的javascript如下:
protected void Page_PreRender(object sender, EventArgs e)
{
string PageInitJS = @"
$(document).ready(function() {
//ListView的列被點選時將欄位值帶入HiddenField
$('#" + this.divListView.ClientID + @" tr').click(function() {
var $objTr = $(this);
$('#" + this.txtID.ClientID + @"').val($objTr.find('td span[id$=lblID]').text());
$('#" + this.txtName.ClientID + @"').val($objTr.find('td span[id$=lblName]').text());
});
});";
Page.ClientScript.RegisterStartupScript(Page.GetType(), Page.ClientID, PageInitJS, true);
}