【问题标题】:selected row in gridview网格视图中的选定行
【发布时间】:2013-10-07 11:50:03
【问题描述】:

我在 sql server 中有两个表如下

PatientDetail - 1st table name     
PatientId --- primary key
firstname
lastname

Patexam - 2nd table name
PId ---- foreign key of first table PatientId
Exam

我在页面中有一个gridview,它显示了第一个表的所有列,如下所示

<asp:GridView ID="gvDoctorList" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="PatientId" HeaderText="PatientId" SortExpression="PatientId" />
        <asp:BoundField DataField="firstname" HeaderText="firstname" SortExpression="firstname" />
        <asp:BoundField DataField="lastname" HeaderText="lastname" SortExpression="lastname" />

        <asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />

    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabaseConnectionString %>" SelectCommand="SELECT [PatientId],[firstname], [lastname], [sex],  FROM [PatientDetails]"></asp:SqlDataSource>

我有一个按钮,文本值 = "formatric3d" 现在,当我在 gridview 中选择一行,然后单击带有

的按钮
value = "formatric3d",

在点击事件时,我想将选定的行 patientid 以及 button text value = "formatric3d" 插入到表名 Patexam 中。

这意味着 PId 等于 PatientId,这是在 gridview 上选择的,而考试等于 button text value = "formatric3d"

【问题讨论】:

    标签: c# asp.net sql-server-2008 gridview


    【解决方案1】:

    这是你想要的吗?

          <asp:Button runat="server" ID="btnExam" Text="formatric3d" OnClick="Exam_ClickHandler" />
                    <asp:GridView ID="gvDoctorList" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
                        AllowPaging="True" AllowSorting="True" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true">
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:CheckBox runat="server" ID="chk" />
                                    <asp:Label runat="server" ID="lblPID" Visible="false" Text='<%# Eval("PatientId") %>'></asp:Label>
                                </ItemTemplate>
    
                            </asp:TemplateField>
                            <asp:CommandField ShowSelectButton="True" />
                            <asp:BoundField DataField="PatientId" HeaderText="PatientId" SortExpression="PatientId" />
                            <asp:BoundField DataField="firstname" HeaderText="firstname" SortExpression="firstname" />
                            <asp:BoundField DataField="lastname" HeaderText="lastname" SortExpression="lastname" />
                            <asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />
                        </Columns>
                    </asp:GridView>
    
          <h3>Patient Exams</h3>
                <asp:DataList runat="server" ID="dtlExams">
                    <ItemTemplate>
                        <%#Eval("Exam") %>
                    </ItemTemplate>
                </asp:DataList>
    //////////////// tree view 
        <asp:TreeView runat="server" ID="tvExams">
            </asp:TreeView>
    

    在页面后面的代码上:

      protected void Exam_ClickHandler(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gvDoctorList.Rows)
            {
                CheckBox chk = (CheckBox)row.FindControl("chk");
                if (chk.Checked)
                {
                    string patientId = ((Label)row.FindControl("lblPID")).Text;
                    string exam = ((Button)sender).Text;
    
                    ///your insertion query goes here.
                    ///
    
                    GetPatientExams(patientId);
                }
    
            }
        }
    
        protected void Patient_ExamHandler(object sender, CommandEventArgs e)
        {
            string patientId = e.CommandArgument.ToString();
            GetPatientExams(patientId);
    
    
        }
    
    
    
      private void GetPatientExams(string pid)
    {
    
        DataTable exams = "Get exam data from db by pid";
    
        dtlExams.DataSource = exams;
        dtlExams.DataBind();
    

    ///////////////树视图 树节点 tnnn;

        foreach (DataRow row in exams.Rows)
        {
            tnnn = new TreeNode(exams["PRODSHORT"].ToString());
            tvExams.Nodes.Add(tnnn);
        }
    
    }
    

    【讨论】:

    • 再提供一个帮助....现在在检查一行之后....我想查看特定患者的插入数据....这意味着一个患者 ID 可能不止一个考试价值...所以我想显示所选患者ID的所有考试...请您告诉我如何使用代码。非常感谢
    • 是的,当然。您需要添加另一个数据绑定控件,例如 gridview 来显示数据。
    • 如果我想在树视图中显示,那么代码应该是什么样的?谢谢
    • 我已经编辑了我的答案.. 这样的事情会为你做的。如果这对您有用,请投票。快乐编程:P
    • 是的,像这样...但我想在树视图中显示,所以怎么可能?
    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 2015-12-22
    • 2016-05-12
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多