Developer29 Ответов: 1

Как получить данные с помощью ID?


Привет...у меня есть вложенная сетка....Я хочу показать данные при нажатии кнопки плюс изображение в виде сетки...
Я получаю все подробности..Но проблема в том, что всякий раз, когда я нажимаю на плюсовое изображение в родительской сетке, оно показывает все данные в деталях таблицы...

Но я хочу показать только данные, связанные с этим конкретным идентификатором, когда я нажимаю на это изображение...

кто-нибудь может мне помочь?

например

Table_Master имеет идентификатор, основной член, пол,.... и т. д
Table_details иметь удостоверение личности,зависимые члены,пол,возраст.....и т. д

Теперь я хочу написать запрос для отображения в дочерней сетке...

когда я нажимаю"+"..Я хочу узнать подробности о зависимом члене....
Идентификатор в обеих таблицах является общим...Это идентификатор первичного ключа....

Что я уже пробовал:

select a.name,a.age,a.Gender, r.Relationname as Relation from table_master b 
    inner join table_detail a  on  a.Enrollautoid=b.Enrollautoid  and a.id=b.id
    left join table_relation r on a.Relationautoid=r.Relationautoid 
    where MARK=0 or MARK is null and a.id=b.id and a.Enrollautoid=b.Enrollautoid                

Garth J Lancaster

как заполняется сетка и чем ? конечно, один из элементов из выбранной строки, Когда вы нажимаете на"+", дает вам "ключ", чтобы ограничить ваш SQL - пожалуйста, обновите свой вопрос, чтобы нам было яснее, что вам нужно - в данный момент "сетка" и ваш оператор SQL кажутся "отключенными".

Developer29

Я получаю вывод с помощью этого запроса...Но он показывает все детали...Я хочу только того, кто зависит от этого первичного...

Developer29

В Родительском поясе...Я показываю несколько деталей, например идентификатор, имя основного лица, и когда я нажимаю плюс, я должен отобразить зависимого члена этого основного лица....У меня есть несколько общих столбцов в двух таблицах,таких как id, Enrollautoid..

Garth J Lancaster

конечно, если у вас есть выбранная "главная" запись, и вы нажимаете на символ плюса, вы затем выбираете из "деталей", где ID = ID-From-Grid

Где ID-From-Grid - это идентификатор "master"

т.е.

Выберите (любые поля/столбцы)
Из Table_Detail D
Где D. ИД = ИД-из-сетки;

Я не понимаю, почему в ваших операторах select, как показано, вы собираетесь выбрать все записи master vs details

Developer29

как получить идентификатор из сетки....

Garth J Lancaster

учитывая, что вы не сказали нам, "какую сетку" / "графический интерфейс" вы используете, ответ будет "я не знаю", но в целом будет событие "кнопка выбрана" или "строка сетки выбрана", которое вы можете "обработать", чтобы получить строку сетки, ее содержимое и перейти оттуда

1 Ответов

Рейтинг:
1

Vijai Anand.G

Надеюсь, это вам поможет.Я включил в него ASP.NET код для тебя.

public class Master
{
	public Master()
	{
		
	}

    public int Id { get; set; }

    public string PrimaryMember { get; set; }

    public string Gender { get; set; }
}


public class Details
{
	public Details()
	{
	
	}

    public int Id { get; set; }

    public string DependentMember { get; set; }

    public string Gender { get; set; }

    public int MasterId { get; set; }
}


public static class GridRepository
{


    public static List<Master> GetMasters()
    {
        var masters = new List<Master>
        {
            new Master{Id=1,PrimaryMember="VijaiAnand",Gender="Male"},
            new Master{Id=2,PrimaryMember="BalaSundar",Gender="Male"}
        };
        return masters;
    }

    public static List<Details> GetDetails()
    {
        var Details = new List<Details>
        {
            new Details{Id=1,DependentMember="cera",Gender="Female",MasterId=1},
            new Details{Id=2,DependentMember="John",Gender="Male",MasterId=1},
            new Details {Id=3,DependentMember="Srini",Gender="Male",MasterId=2}
        };
        return Details;
    }
}


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>

<body>
    <form id="form1" runat="server">
    <div>
        <asp:gridview ID="Gridview1" runat="server" AutoGenerateColumns="false" OnRowDataBound="Gridview1_RowDataBound" DataKeyNames="Id">
            <Columns>
                <asp:TemplateField HeaderText="DetailsGrid">
                    <ItemTemplate>
                        <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" >
                            <Columns>
                                <asp:BoundField DataField="DependentMember" HeaderText="DependentMember" />
                                <asp:BoundField DataField="Gender" HeaderText="Gender" />
                            </Columns>
                        </asp:GridView>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="PrimaryMember" HeaderText="PrimaryMember" />
                <asp:BoundField DataField="Gender" HeaderText="Gender" />
            </Columns>
        </asp:gridview>
    </div>
    </form>
</body>
</html>


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

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindMasterGrid();
        }
    }

    protected void BindMasterGrid()
    {
        var masters = GridRepository.GetMasters();
        Gridview1.DataSource = masters;
        Gridview1.DataBind();
    }

    
    protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int masterId = 0;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            masterId = Convert.ToInt32(Gridview1.DataKeys[e.Row.RowIndex].Value);
            GridView grdDetails = e.Row.FindControl("GridView2") as GridView;
        
            if (grdDetails != null)
            {
                grdDetails.DataSource = GridRepository.GetDetails().Where(id => id.MasterId == masterId);
                grdDetails.DataBind();

            }
        }
    }
}


Вы должны включить логику для + image control внутри этого Gridview1 и переключить его с помощью JavaScript.