单击按钮获取列值
Take column value on button click
我有 table 多行。每行前面都有一个 "Select" 按钮。
Table :
https://jsfiddle.net/qmg1309n/2/
Table 填充了从数据库中获取值的过程。
我获取值并将其发送到 aspx:
的 C# 部分
LogicTableAdapters.getLevelTableAdapter getLvl = new LogicTableAdapters.getLevelTableAdapter();
DataTable dtLvl = getLvl.getLevel(Convert.ToInt32(ddlLevel.SelectedValue));
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4]{ new DataColumn("ObjtID", typeof(int)), new DataColumn("Name", typeof(string)), new DataColumn("BCC", typeof(string)),new DataColumn("ParentName", typeof(string)) ,});
foreach (DataRow dr in dtLvl.Rows)
{
dt.Rows.Add(Convert.ToInt32(dr["ObjID"]), dr["Name"].ToString(), dr["BCC"].ToString(), dr["ParentName"].ToString());
}
gvObject.DataSource = dt;
gvObject.DataBind();
这是 asp 部分:
<asp:GridView ID="gvObject" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" CssClass="GridView">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<button class="myBtn" type="button" data-toggle="modal" data-target="#myModal" style="vertical-align: middle"><span>Select</span></button>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ObjID">
<ItemTemplate>
<asp:Label ID="ObjID" runat="server" class="ObjekatID" Width="118px" Height="36px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("ObjID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="Name" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BCC">
<ItemTemplate>
<asp:Label ID="BCC" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("BCC") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ParentName">
<ItemTemplate>
<asp:Label ID="ParentName" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("ParentName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
当在每一行前面单击按钮 "select" 时,我需要为该行获取 ObjID 值并将其存储在 C# 的变量中。
当单击 select 按钮时,该 ObjID 值稍后将成为生成新 table 的新 GET 过程的参数。
有人可以帮我解决这个问题吗?
提前致谢!
如果您在 GridView 中定义了 OnSelectedIndexChanged
事件,您可以使用它来查找 SelectedRow 的标签。
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Label lbl = ((GridView)sender).SelectedRow.FindControl("ObjID") as Label;
var ObjID = lbl.Text;
}
aspx
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="true"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
更新
如果你只想在前端使用它,你可以这样做。给按钮添加一个数据属性。
<button class="myBtn" type="button" data-objid="<%# Eval("ObjID") %>">
然后单击按钮时,您可以读取 属性 并获取值。
<script type="text/javascript">
$('.myBtn').click(function () {
alert($(this).data('objid'));
});
</script>
我有 table 多行。每行前面都有一个 "Select" 按钮。 Table :
https://jsfiddle.net/qmg1309n/2/
Table 填充了从数据库中获取值的过程。 我获取值并将其发送到 aspx:
的 C# 部分LogicTableAdapters.getLevelTableAdapter getLvl = new LogicTableAdapters.getLevelTableAdapter();
DataTable dtLvl = getLvl.getLevel(Convert.ToInt32(ddlLevel.SelectedValue));
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4]{ new DataColumn("ObjtID", typeof(int)), new DataColumn("Name", typeof(string)), new DataColumn("BCC", typeof(string)),new DataColumn("ParentName", typeof(string)) ,});
foreach (DataRow dr in dtLvl.Rows)
{
dt.Rows.Add(Convert.ToInt32(dr["ObjID"]), dr["Name"].ToString(), dr["BCC"].ToString(), dr["ParentName"].ToString());
}
gvObject.DataSource = dt;
gvObject.DataBind();
这是 asp 部分:
<asp:GridView ID="gvObject" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" CssClass="GridView">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<button class="myBtn" type="button" data-toggle="modal" data-target="#myModal" style="vertical-align: middle"><span>Select</span></button>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ObjID">
<ItemTemplate>
<asp:Label ID="ObjID" runat="server" class="ObjekatID" Width="118px" Height="36px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("ObjID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="Name" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BCC">
<ItemTemplate>
<asp:Label ID="BCC" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("BCC") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ParentName">
<ItemTemplate>
<asp:Label ID="ParentName" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("ParentName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
当在每一行前面单击按钮 "select" 时,我需要为该行获取 ObjID 值并将其存储在 C# 的变量中。
当单击 select 按钮时,该 ObjID 值稍后将成为生成新 table 的新 GET 过程的参数。
有人可以帮我解决这个问题吗?
提前致谢!
如果您在 GridView 中定义了 OnSelectedIndexChanged
事件,您可以使用它来查找 SelectedRow 的标签。
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Label lbl = ((GridView)sender).SelectedRow.FindControl("ObjID") as Label;
var ObjID = lbl.Text;
}
aspx
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="true"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
更新
如果你只想在前端使用它,你可以这样做。给按钮添加一个数据属性。
<button class="myBtn" type="button" data-objid="<%# Eval("ObjID") %>">
然后单击按钮时,您可以读取 属性 并获取值。
<script type="text/javascript">
$('.myBtn').click(function () {
alert($(this).data('objid'));
});
</script>