1

我正在创建这个线程作为我之前的一个后续。

我正在尝试创建一个填充了我数据库中的一些数据的gridview。但是,正如您从底部的 3 个边界域中看到的那样,我已经阻止它们出现在我的 web 应用程序上。

 <Columns>
    <asp:BoundField DataField="memberreportid" HeaderText="property" SortExpression="false"/>
    <asp:BoundField DataField="typeofcrime" HeaderText="property" SortExpression="false" />
    <asp:BoundField DataField="crdatetime" HeaderText="property" SortExpression="false" />
    <asp:BoundField DataField="address" HeaderText="property" SortExpression="false" />
    <asp:BoundField DataField="detail" HeaderText="property" SortExpression="false"/>
    <asp:BoundField DataField="incidentdate" HeaderText="property" SortExpression="false" />
    <asp:BoundField DataField="incidenttime" HeaderText="victim" SortExpression="false"/>
    <asp:BoundField DataField="property" HeaderText="suspect" SortExpression="false" Visible="false" />
    <asp:BoundField DataField="victim" HeaderText="suspect" SortExpression="false" Visible="false" />
    <asp:BoundField DataField="suspect" HeaderText="suspect" SortExpression="false" Visible="false" />
  </Columns>

尽管他们无法通过网页实际看到,但我正在尝试将它们显示在标签上。单击选择按钮时,我使用此方法将它们显示出来(我已将“AutoGenerateSelectColumn”设置为true)

protected void GWCase_SelectedIndexChanged(object sender, EventArgs e)
    {
        lbmemberreportid.Text = GWCase.SelectedRow.Cells[1].Text;
        lblproperty.Text = GWCase.SelectedRow.Cells[8].Text; 
        lblvictim.Text = GWCase.SelectedRow.Cells[9].Text;
        lblsuspect.Text = GWCase.SelectedRow.Cells[10].Text;
    }

不幸的是,我只能将 memberreportID 显示在标签上,而不能显示其他 3 个属性,我相信它不会,因为我把它隐藏起来了。除了我在gridview中选择时尝试显示特定值的方法之外,还有其他方法吗?

更新

Page_load 绑定

 protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            LoadGrid();
        }


    }

    private void LoadGrid()
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI";
        conn.Open();

        DataSet ds = new DataSet();

        SqlDataAdapter da = new SqlDataAdapter("SELECT memberreportid, typeofcrime, crdatetime, address, detail, incidentdate, incidenttime, property, victim, suspect, detail, suspectdetail, propertydetail from memberreport", conn);
        da.Fill(ds);

        GWCase.DataSource = ds.Copy();
        GWCase.DataBind();

        conn.Close();

        ddlpid1.Visible = false;
        ddlpid2.Visible = false;
        ddlpid3.Visible = false;
        ddlpid4.Visible = false;
        ddlpid5.Visible = false;
        ddlpid6.Visible = false;
        ddlpid7.Visible = false;
        ddlpid8.Visible = false;
        ddlpid9.Visible = false;
        ddlpid10.Visible = false;
    }

试图读取隐藏字段

protected void GWCase_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        LoadGrid();
        GWCase.PageIndex = e.NewPageIndex;
        GWCase.DataBind();
    }
4

3 回答 3

1

您需要使用DataKeyNamesGridView 的属性:或FindControl()使用时的方法 TemplateFields

如果使用DataKeyNames

设置datakeynames= "memberreportid"// 仅使用主键。可以使用多个字段

您可以在 SelectedIndexchanged 事件中访问相同的内容:gridView1.DataKeys[gridView1.SelectedIndex].Value.ToString();

有关读取隐藏列值的不同方法的完整理解,请参阅此链接

于 2013-08-01T07:21:25.540 回答
1

好吧,您可以采用不同的方法并将值放在隐藏字段中:

<Columns>
    ...
    <asp:TemplateField>
        <ItemTemplate>
            <asp:HiddenField ID="hdfSuspect" runat="server" Value='<%# Eval("suspect") %>' />
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

然后,您可以通过执行以下操作来访问它:

protected void GWCase_SelectedIndexChanged(object sender, EventArgs e)
{
    ...
    lblsuspect.Text = ((HiddenField) GWCase.SelectedRow.FindControl("hdfSuspect")).Value;
}
于 2013-08-01T04:28:52.693 回答
0

这就是在标签中显示网格值的方法

protected void  GWCase_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.DataItem != null)
        {
            Label5.Text  = e.Row.Cells[1].Text;

        }   
    }
于 2019-10-03T15:08:24.517 回答