如何获取隐藏单元格的值?
How to get value of the hidden cell?
我在我的项目中使用了gridView。
我有这个 class:
public class FeatureDesc
{
public string Title { get; set; }
public string Tip { get; set; }
public string ID { get; set; }
}
我创建:
List<FeatureDesc> list_fd = new List<FeatureDesc>();
有时我会填写 list_fd 并将其设置为数据源:
gvFeatList.DataSource = list_fd;
gvFeatList.DataBind();
所有内容(标题、提示、ID)都已显示并且效果完美。
但是我需要对用户隐藏 ID 列,并且在某些时候当我点击行以获取被点击行的 ID 时
javascript 函数。
所以我的问题是如何获取隐藏的列文本?
如果某列隐藏在代码中,则它在 html 中不存在。但是您可以使用 CSS 隐藏它并在一行中获取值 click
<asp:GridView ID="gvFeatList" runat="server" AutoGenerateColumns="false" ItemType="YourNameSpace.YourClass.FeatureDesc">
<Columns>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<%# Item.Title %>
//in a span element
<span style="display:none;"><%# Item.ID %></span>
//or a hidden field
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Item.ID %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tip">
<ItemTemplate>
<%# Item.Tip %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
$("#<%= gvFeatList.ClientID %> tr").click(function () {
var IDcontainer = $(this).find("span");
alert(IDcontainer.html());
});
$("#<%= gvFeatList.ClientID %> tr").click(function () {
var IDcontainer = $(this).find("input[type=hidden]");
alert(IDcontainer.val());
});
</script>
在本例中,我将 ID 放在 <span>
元素中。但它可能是一个 HiddenField,另一个列等
而不是在标记或代码中将 Visible 属性 设置为 false
Css 会成功的:
加cssclass到<asp:boundfield>
喜欢
<asp:BoundField ItemStyle-CssClass="hidden-col" DataField="ID" HeaderText="ID"/>
然后在css
中隐藏class
.hidden-col{
display:none;
}
这样 ID 值将可用于您的 js 函数。
您可以像
一样绑定隐藏列的方法之一
<asp:TemplateField>
<ItemTemplate>
<table>
<tr>
<td>
<input id="btnTitle" type="button" onclick='getId(this);' value='<%# Eval("Title") %>' />
<input id="hdnfldID" type="hidden" value='<%# Eval("ID") %>' />
<br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
你可以通过 javascript 点赞
来获取 ID
<script type="text/javascript">
function getId(ele) {
alert("Title : " + ele.value + "\n\rId : " + $(ele).closest('tr').find('#hdnfldID').val());
}
</script>
我在我的项目中使用了gridView。
我有这个 class:
public class FeatureDesc
{
public string Title { get; set; }
public string Tip { get; set; }
public string ID { get; set; }
}
我创建:
List<FeatureDesc> list_fd = new List<FeatureDesc>();
有时我会填写 list_fd 并将其设置为数据源:
gvFeatList.DataSource = list_fd;
gvFeatList.DataBind();
所有内容(标题、提示、ID)都已显示并且效果完美。
但是我需要对用户隐藏 ID 列,并且在某些时候当我点击行以获取被点击行的 ID 时 javascript 函数。
所以我的问题是如何获取隐藏的列文本?
如果某列隐藏在代码中,则它在 html 中不存在。但是您可以使用 CSS 隐藏它并在一行中获取值 click
<asp:GridView ID="gvFeatList" runat="server" AutoGenerateColumns="false" ItemType="YourNameSpace.YourClass.FeatureDesc">
<Columns>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<%# Item.Title %>
//in a span element
<span style="display:none;"><%# Item.ID %></span>
//or a hidden field
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Item.ID %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tip">
<ItemTemplate>
<%# Item.Tip %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
$("#<%= gvFeatList.ClientID %> tr").click(function () {
var IDcontainer = $(this).find("span");
alert(IDcontainer.html());
});
$("#<%= gvFeatList.ClientID %> tr").click(function () {
var IDcontainer = $(this).find("input[type=hidden]");
alert(IDcontainer.val());
});
</script>
在本例中,我将 ID 放在 <span>
元素中。但它可能是一个 HiddenField,另一个列等
而不是在标记或代码中将 Visible 属性 设置为 false
Css 会成功的:
加cssclass到<asp:boundfield>
喜欢
<asp:BoundField ItemStyle-CssClass="hidden-col" DataField="ID" HeaderText="ID"/>
然后在css
中隐藏class .hidden-col{
display:none;
}
这样 ID 值将可用于您的 js 函数。
您可以像
一样绑定隐藏列的方法之一<asp:TemplateField>
<ItemTemplate>
<table>
<tr>
<td>
<input id="btnTitle" type="button" onclick='getId(this);' value='<%# Eval("Title") %>' />
<input id="hdnfldID" type="hidden" value='<%# Eval("ID") %>' />
<br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
你可以通过 javascript 点赞
来获取 ID<script type="text/javascript">
function getId(ele) {
alert("Title : " + ele.value + "\n\rId : " + $(ele).closest('tr').find('#hdnfldID').val());
}
</script>