在我的gridview控件中我有4列,1列是不可见的,电子邮件地址列是不可见的
<asp:GridView id='gridData' runat='server'>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblUsername" runat="server"
Text='<%# Bind("ToUsername") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblfirstname" runat="server"
Text='<%# Bind("Firstname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lbllastname" runat="server"
Text='<%# Bind("Lastname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblEmaill" runat="server" visible="false" Text='<%# Bind("EmailAddress") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:Gridview>
这是我的JQuery我希望在点击行和电子邮件地址时显示用户详细信息
$(function () {
var gridId = "<%= gridData.ClientID %>";
var rowClickEvent = "#" + gridId + " tbody tr"
var current = "";
$(rowClickEvent).click(function () {
var row = this;
var username = row.cells[0].childNodes[1].innerText;
var firstname = row.cells[1].childNodes[1].innerText;
var lastname = row.cells[2].childNodes[1].innerText;
var email = row.cells[3].childNodes[1].innerText;
alert('Username : '+username+'<br/>FullName : '+firstname+""+lastname+'<br/>Email : '+email);
});
我也试过这段代码,但它无法正常工作:
var tr = $(this).closest('tr');
var message = row.cells[3].next("input[name$=lblemail]").val();
答案 0 :(得分:1)
visible="false"
不会让控件在客户端呈现。因此,当您尝试在客户端脚本中访问它时,您将找不到它,因为该元素将不存在。如果您想在客户端访问它并希望它被隐藏,您可以使用HiddenFields
或使用CSS在客户端隐藏该元素,方法是添加display:"none"
或visibility:"hidden"
或两者。
答案 1 :(得分:0)
尝试链接此
$("#gridData tr").on("click",function(){
var self=$(this);
var col1=self.find("td:eq(1)").html();
var col2=self.find("td:eq(2)").html();
var col3=self.find("td:eq(3)").html();
var result="COL1 = "+col1+" COL2 = "+col2+" COL3 = "+col3;
alert(result);
});
如果将属性设置为visible = false,那么它将不会存在于dom中,使其显示:none或opacity = 0或使用隐藏字段
答案 2 :(得分:0)
<asp:GridView id='gridData' runat='server'>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblUsername" runat="server"
Text='<%# Bind("ToUsername") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblfirstname" runat="server"
Text='<%# Bind("Firstname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lbllastname" CssClass="GetEmail" runat="server"
Text='<%# Bind("Lastname") %>' Email='<%# Bind("EmailAddress") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:Gridview>
并使用以下javascript:
$(document).ready(function () {
$("#gridData tr").live("click", function () {
alert($(this).closest('tr').find(".GetEmail").attr("Email"));
});
});
释
如果你将任何控件设为visible = false,它将永远不会渲染为html。 您可以使用以上示例,其中我已分配&#34; EmailAddress&#34;到自定义属性&#34;电子邮件&#34;在lbllastname控件和访问自定义属性&#34;电子邮件&#34;行点击网格时的值。这也不会向网格添加新列。 建议任何改进。