我在项目中使用gridView。
我上了这个课:
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函数。
所以我的问题是如何获取隐藏的列文本?
答案 0 :(得分:3)
如果某列隐藏在其背后的代码中,则html中不存在。但是您可以使用CSS隐藏它,并连续单击获取值
<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,另一个列等。
答案 1 :(得分:0)
不是在标记或代码中将Visible属性设置为false
CSS可以解决问题:
将css类添加到<asp:boundfield>
中
<asp:BoundField ItemStyle-CssClass="hidden-col" DataField="ID" HeaderText="ID"/>
然后将类隐藏在CSS中
.hidden-col{
display:none;
}
这样,ID值将可用于您的js函数。
答案 2 :(得分:0)
一种可以像
一样绑定隐藏列的方法<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>