webForumDet fria alternativet

Två iframes och en datagrid

.NET

5 svar · 254 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Frågan#1

Hej,
Jag har två iframes. På den ena finns en knapp. När jag trycker på den ska data hämtas och bindas till datagriden i den andra iframen. Har försökt med olika strategier utan att lyckas. Har ngn en lösning?

Tack på

Medlem sedan maj 20012 812 inlägg
#2

Eftersom det rör sig om 2 sidor, så måste du från din ena IFrame använda Javascript som laddar sidan i din andra IFrame. ASP.NET kan inte klara detta eftersom det körs på servern och inte har en anning om att du har en massa IFrames på din sida.

- Magnus

Medlem sedan feb. 20013 023 inlägg
#3

OK,
När jag trycker på Hämta-knappen i iframe 1 så använder jag javacsript för att ladda om sidan i den andra iframen.

Jag använder nu codebehind-kod för att hämta ett dataset. Det datasetet vill jag då binda till datagriden i iframe 2. Var kommer javascript in i bilden? Jag vill kunna använda codebehind för att hämta datasetet.

Medlem sedan sep. 20011 914 inlägg
#4

Lägg denna kod i knappens event hanterare.

Page.RegisterClientScript("lalala", "<script language='Javascript' type='text/javascript'>function grr(){parent.document.getElementById('iframe2').src = 'datagridsida.aspx?dataid=3';}</script>");

Koden är otestad och osäker, men borde funka så att javascriptet säger till sin parent(sidan med iframen) att leta reda på "iframe2" och sätta dess src.

Medlem sedan feb. 20013 023 inlägg
#5

ok, bara en fråga kvar då ;)
Jag är ny på webbprogrammering. Har mest hållit på med windows-programmering förut.

Jag har en eventhandler för knapp 1. I den har jag en variabel som heter ds och som är ett dataset. Problemet är hur jag får datasetet som jag erhåller i frame 1 till frame 2?

Medlem sedan sep. 20011 914 inlägg
#6

Du kan säkert lägga det i session eller nåt, men det bästa är väl att ta ut datan i frame 2 sidan.
Sida 1.

private void button_click(object sender, EventsArgs e)
{
   int id = GetDataId();
   Page.RegisterClientScript("lalala", string.Format("<script language='Javascript' type='text/javascript'>parent.document.getElementById('iframe2').src = 'datagridsida.aspx?dataid={0}';</script>", id.ToString());
}

Sida 2.

protected DataGrid dgData;
private void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
      BindData();
}

private void BindData()
{
   int id = int.Parse(Request.QueryString["dataid"].ToString());

   dgData.DataSource = GetData(id);
   dgData.DataBind();
}
276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
148 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)