【问题标题】:Asp.net - binding between GridView and DetailsView doesn't workAsp.net - GridView 和 DetailsView 之间的绑定不起作用
【发布时间】:2015-06-28 07:42:32
【问题描述】:

我创建了一个 GridView 和一个 Contacts 的 DetailsView。我希望如果用户在 GridView 中选择一个联系人,它将在 GridView 中显示完整的详细信息。

这是aspx源代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Contacs.aspx.cs" Inherits="Atid4.Contacs" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                    DataKeyNames="ID" 
                    DataSourceID="SqlDataSourceMain" 
                    ShowSelectButton="true" 
                    EnableViewState="true"
                    EnablePersistedSelection="true" 
                    OnSelectedIndexChanged="GridViewMain_SelectedIndexChanged">
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" />
                        <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
                        <asp:BoundField DataField="first_name" HeaderText="first_name" SortExpression="first_name" />
                        <asp:BoundField DataField="last_name" HeaderText="last_name" SortExpression="last_name" />
                    </Columns>
                </asp:GridView>

                <asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="SqlDataSourceMain" Height="50px" Width="125px">
                </asp:DetailsView>
                <asp:SqlDataSource ID="SqlDataSourceMain" runat="server" ConnectionString="<%$ ConnectionStrings:AtidConnectionString %>" SelectCommand="SELECT * FROM [Contacs]"></asp:SqlDataSource>

            </ContentTemplate>
        </asp:UpdatePanel>

    </div>
    </form>
</body>
</html>

我添加了一个函数 GridViewMain_SelectedIndexChanged,当用户在 Gridview 中选择一行时调用该函数。当用户选择其中一个联系人时调用该函数,但联系人在 GridView 中没有更改。它继续显示第一个联系人。

这是后面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Atid4
{
    public partial class Contacs : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DetailsView1.DataBind();
            }
        }

        protected void GridViewMain_SelectedIndexChanged(object sender, EventArgs e)
        {
            DetailsView1.SetPageIndex(GridView1.SelectedIndex);
        }
    }
}

谢谢。

【问题讨论】:

    标签: c# asp.net gridview detailsview


    【解决方案1】:

    我通过 DetialsView 中的 EnablePaging 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2016-10-10
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多