将列值存储为参数

时间:2018-09-17 10:19:16

标签: c# asp.net

单击按钮时,我需要找到并存储该行的ObjID列的值。 表格:

https://jsfiddle.net/qmg1309n/2/

这是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部分:

<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>

我需要将列值存储为变量,以便稍后可以在单击按钮时将其用作参数来生成新的网格视图。我将为此使用类似的代码,只是另一个过程。

getLvl.getLevel(Convert.ToInt32(ddlLevel.SelectedValue));

ddlLevel:SelectedValue的变量包含一个paramether(单击按钮时所取的列的值)。

我尝试使用ajax和webmethod,但遇到了一些问题,因为填充了第一网格视图,并且每次都读取了ajax,所以我将需要其他方法。 有谁可以帮助我吗? 预先感谢!

2 个答案:

答案 0 :(得分:3)

1. Your Select Button code --> <asp:Button ID="Button2"  runat="server" CausesValidation="false" Text="Select" CommandName="GetRec"></asp:Button>  

    public void gvObject_OnRowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "GetRec")
        {
            Label lblName = (Label)gvObject.FindControl("Name");
            Label lblBCC = (Label)gvObject.FindControl("BCC");
        }
    }

使用gridview的OnRowCommand事件。 字符串BCC = lblBCC.Text; 希望对您有帮助:-)

答案 1 :(得分:1)

添加对接On_Click和我们的事件:

protected void Selectbtn_Click(object sender,EventArgs e)
{
    var ObjectIdValue = ((Label)(((sender as LinkButton).NamingContainer as GridViewRow)
        .FindControl("ObjIDLbl"))).Text;
}