Benutzer mit den meisten Antworten
GridView selectedIndexchanged

Frage
-
Hallo!
Ich möchte den selectedIndexchanged Event auslösen jedoch passiert nichts.
Könnte mir bitte jemand erklären warum onRowDataBound funktioniert und
das selectedIndexchanged und selectedIndexchanging nicht.Danke im voraus und Lg
String.Rise
<asp:GridView ID="grdTest" runat="server" OnRowDataBound="Test_RowDataBound" OnSelectedIndexChanged="grdTest_SelectedIndexChanged" OnSelectedIndexChanging="grdTest_SelectedIndexChanging"> </asp:GridView>
protected void grdTest_SelectedIndexChanged(object sender, EventArgs e) { if (grdTest.SelectedRow != null) { } } protected void grdTest_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e) { if (grdTest.SelectedRow != null) { } }
Antworten
-
Hi,
schau mal hier, da wird das erklärt:
http://msmvps.com/blogs/deborahk/archive/2010/01/25/asp-net-selecting-a-row-in-a-gridview.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert String.Rise Montag, 25. Februar 2013 19:44
Alle Antworten
-
Hi,
zeig doch mal bitte die Methode, in der grdTest.DataBind() steht. Ich tippe mal darauf, dass Du das auch bei einem PostBack aufrufst, das wäre in diesem Fall aber kontraproduktiv.
Falls ich recht habe, könntest Du das bspw. so anpassen:
grdTest.DataSource = <DeineDatenquelle>; if( !Page.IsPostBack ) { grdTest.DataBind(); }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
danke vorerst für deine prompte Antwort.
Hier mal der Code im CodeBehind
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { TestBinding(); } } private void Test() { grdTest.DataSource = <DatenQuelle>; grdTest.DataBind(); } protected void grdTest_RowDataBound(Object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { e.Row.Cells[0].Visible = false; } if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Normal) { e.Row.Cells[0].Visible = false; e.Row.Cells[1].Width = 150; e.Row.CssClass = "normal"; } if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Alternate) { e.Row.Cells[0].Visible = false; e.Row.Cells[1].Width = 150; e.Row.CssClass = "alternate"; } } protected void grdTest_SelectedIndexChanged(object sender, EventArgs e) { if (grdTest.SelectedRow != null) { } } protected void grdTest_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e) { if (grdTest.SelectedRow != null) { } }
Ich möchte das ohne CommandFiled (asuwahl-Button) realisieren. So das wenn ich auf eine Zeile klicke das dann der Event ausgelöst wird. Habe es gerade mit einem CommandFiled probiert und da hat es funktioniert aber nicht ohne CommandFiled.
Danke und Lg
-
Hi,
und wie hast Du es dann versucht? Im Code ist nicht zu sehen, dass Du irgendwo clientseitig etwas hättest, dass den benötigten Postback auslösen würde.
Bzgl. DataBind hatte ich dir ja was geschrieben, das solltest Du ggfs. noch berücksichtigen.
Du kannst problemlos einen eigenen Button, LinkButton oder ImageButton für die Selektierung oder andere Aktionen einer Zeile verwenden.
<asp:TemplateField HeaderText="Aktionen"> <ItemTemplate> <asp:Button ID="Select" runat="server" CommandName="Select" Text="Select" /> <asp:Button ID="Edit" runat="server" CommandName="Edit" Text="Edit" /> </ItemTemplate> </asp:TemplateField>
Wenn benötigt, kannst Du die Buttons noch CommandArgument='<%# Container.DataItem( "<IDSpalteDesDatensatzes>" ) %>' angeben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi,
und wie hast Du es dann versucht?
indem ich das CommandField (Auswählen) zusätzlich eingefügt habe.
<Columns> <asp:CommandField ShowSelectButton="True" /> </Columns>
Wenn ich jetzt auf dem LinkButton klick wird der Event ausgelöst.
Du kannst problemlos einen eigenen Button, LinkButton oder ImageButton für die Selektierung oder andere Aktionen einer Zeile verwenden.
Mein Ziel ist den Event ohne ein CommandField (linkButton, Button, Image) auszulösen.
Falls das aus irgendeinem Grund nicht funktionieren sollte "muss" ich wohl ein ImageButton nehmen aber da der Bereich in dem die Daten angezeigt werden begrenzt ist wäre mir lieber wenn das durch klick auf die Zeile wie bei WinForm ausgelöst wird.
Danke im voraus und Lg
- Bearbeitet String.Rise Montag, 25. Februar 2013 13:42
-
Hi,
schau mal hier, da wird das erklärt:
http://msmvps.com/blogs/deborahk/archive/2010/01/25/asp-net-selecting-a-row-in-a-gridview.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert String.Rise Montag, 25. Februar 2013 19:44