webForumDet fria alternativet

Buttons ihop med en repeater.

.NET

2 svar · 394 visningar · startad av bobrov

Medlem sedan maj 200833 inlägg
Frågan#1

Hej. Håller på att testa och försöka lära mig asp:repeater.
Tanken är att jag ska använda repeatern till en sida som fungerar som ett forum. Jag ska presentera forum-inläggen som hämtas från en databas med hjälp av en repeater.
Då jag vill att man ska kunna ändra på inlägget eller ta bort det så ska det till varje inlägg hänga med två knappar.
Koden här är bara än så länge exempelkod som jag testar med.
Mitt problem är att

.aspx:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<link rel="Stylesheet"
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater" runat="server">

        \<ItemTemplate\>
            \<%# DataBinder.Eval(Container.DataItem, "CustomerName") %\>
            \<%# DataBinder.Eval(Container.DataItem, "Country") %\>
            \<asp:Button ID="repeaterbtn" Text="Push me!" OnClick="repeaterbtn_OnClick" runat="server" /\>
            \<br /\>
        \</ItemTemplate\>
        
    \</asp:Repeater\>
    
    \<asp:Label ID="lblText" Text="Country" runat="server" /\>

\</div\>
\</form\>

</body>
</html>

.aspx.cs:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
ds = new DataSet();
DataTable dt = ds.Tables.Add("Customer");
dt.Columns.Add("CustomerName", Type.GetType("System.String"));
dt.Columns.Add("Country", Type.GetType("System.String"));

    DataRow dr = dt.NewRow();
    dr\[0\] = "TestCostumer1";
    dr\[1\] = "USA";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr\[0\] = "TestCostumer2";
    dr\[1\] = "Sweden";
    dt.Rows.Add(dr);

    Repeater.DataSource = ds;
    Repeater.DataBind();
}

protected void repeaterbtn_OnClick(object sender, EventArgs e)
{
    lblText.Text = (string)ds.Tables\[0\].Rows\[0\]\[1\];
}

}

I metoden repeaterbtn_OnClick skulle jag ju vilja att beroende på vilken knapp man klickar på så ska Sweden eller USA visas i lblText. Hur löser man detta, alltså kollar vilken knapp man tryckte på?

Sedan det här med EnableEventValidation="false". Den har jag satt till falskt därför att jag ville få det att funka. Dock vet jag inte vad det innebär. Har förstått att detta felet kan lösas med att sätta if(!Page.isPostback) i void Page_Load när man databinder. Men jag vill ju att det ska uppdateras varje gång som jag gör en ändring eller lägger till ett inlägg. Databinder jag igen då inne i metoden där ändringen sker?

Hoppas jag kan få nån bra hjälp =)

Medlem sedan maj 200819 inlägg
#2

Ang. EnableEventValidation så kan du läsa lite här: http://www.dotnetic.com/dnet/?q=node/8

Så ur säkerhetssynpunkt bör man nog låta den vara true...

I din repeaterbtn_OnClick(object sender, EventArgs e) så får du ju in vilken knapp som man klickade på. Fast sen förstod jag inte riktigt hur du genom knappen ska avgöra om USA eller Sweden ska visas?

Mer info om event-hantering:
http://www.c-sharpcorner.com/UploadFile/ddutta/EventHandlingInNetUsingCS11092005052726AM/EventHandlingInNetUsingCS.aspx

Medlem sedan maj 200833 inlägg
#3

jo jag vet att jag kan ta hand om knappen via att jag skickar med knapp-objektet men det måste väl även gå att få nån info i vilken rad knappen låg.

alltså jag menar, om man klickar på en knapp så har ju den lagts till tillsammans med en rad ur tabellen. Kan man inte på nåt sätt skriva att

lblText.Text = värdet i "Country"-kolumnen i den rad som tillhör den knappen som klickades på.

304 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
172 ms — ändringar (db)