加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从隐藏的边界获取值? ASP.NET

发布时间:2020-12-15 04:18:13 所属栏目:百科 来源:网络整理
导读:我知道我要问的问题已经被其他人要求了,但这些答案对我的问题没有任何解决. 我有一个gridview包含2个BoundFields,2个ButtonFields和一个checkbox字段(这是一个TemplateField). 我还有一个datatable,填充数据库中的数据. 在aspx代码中,我创建了gridview,其中
我知道我要问的问题已经被其他人要求了,但这些答案对我的问题没有任何解决.

我有一个gridview包含2个BoundFields,2个ButtonFields和一个checkbox字段(这是一个TemplateField).

我还有一个datatable,填充数据库中的数据.

在aspx代码中,我创建了gridview,其中的字段设置了最后一个BoundField Visible = false.

在我的代码中,我添加了列,并将数据源绑定到我的datatable.

但是当我尝试从隐藏的边界读取数据时,该字段是空的.为什么我不能使用类似问题提到的解决方案的问题是因为人们假设数据被逐个填充,而不是通过将datatable绑定到gridview的数据源.

所以我的问题是:他们是从隐藏边界获取数据的一种方法,并且还保留通过将datatable绑定到gridview的数据源来添加数据的可能性?
如果是,是否可以从该领域获得价值?

附:我在visual studio 2010中使用asp.net/c#

ASPX:

<asp:GridView ID="gvSelect" runat="server" AutoGenerateColumns="False" BorderStyle="None" onrowcommand="gvTestSelect_RowCommand">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:CheckBox runat="server" ID="cbHeader" OnPreRender="cbHeader_PreRender" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox runat="server" ID="cbItems" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="field" HeaderText="Veld" SortExpression="field" />
        <asp:ButtonField DataTextField="up" HeaderText="Omhoog" SortExpression="up" CommandName="up" Text="&uarr;" />
        <asp:ButtonField DataTextField="down" HeaderText="Omlaag" SortExpression="down" CommandName="down" Text="&darr;" />
        <asp:BoundField DataField="hidden" SortExpression="hidden" />
    </Columns>
</asp:GridView>

代码后面(我填写gridview):

//create array list and fill it with all columns
Dictionary<string,string> dict = FillLists.getColumnsByTable(loader,ddlInfoTableI.SelectedItem.Value.ToString());

//loop trough dictionary
foreach (var val in dict)
{
    //create new dtSelect datarow
    DataRow dr = dtSelect.NewRow();

    //set row values for column values
    dr["select"] = false;
    dr["field"] = val.Value.ToString();
    dr["up"] = new ButtonField { CommandName = "up",Text = loader.LoadResourceString(1024),HeaderText = "&uarr;",ButtonType = ButtonType.Button,Visible = true };
    dr["down"] = new ButtonField { CommandName = "down",Text = loader.LoadResourceString(1025),HeaderText = "&darr;",Visible = true };
    dr["hidden"] = val.Key.ToString();

    //add the datarow
    dtSelect.Rows.Add(dr);

    //set datatable session to datatable
    Session["dtSelect"] = dtSelect;

    //set datasource of the gridview to datatable
    gvSelect.DataSource = dtSelect;

    //bind data to gridview
    gvSelect.DataBind();
}

所以现在我需要从gridview中获取数据(从隐藏的边界中选择),因为它们可以编辑除了隐藏的边界之外的gridview,所以这是知道它的原始行的唯一方法.

解决方法

为您需要获取的列添加数据键:
<asp:GridView ID="GridView1" runat="server" DataKeyNames="hidden" ...>

添加datakey后,您可以使用行索引访问其值:

var rowIndex = 0;
var hiddenValue = (string)GridView1.DataKeys[rowIndex]["hidden"];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读