2016-07-01 12 views
0

1.This ist mein HTML-Befehl Argument in pageindexchangeing Ereignis erhalten:wie für Datenbindung

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager> 
      <asp:GridView ID="reqparentgird" CssClass="prntgrd" runat="server" AutoGenerateColumns="False" OnRowCommand="reqparentgird_RowCommand" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" AllowPaging="True" OnPageIndexChanging="reqparentgird_PageIndexChanging"> 
       <AlternatingRowStyle BackColor="#DAEBBA" /> 
       <Columns> 
        <asp:TemplateField HeaderStyle-CssClass="grdhead" HeaderText="mainheader"> 
         <ItemTemplate> 
          <div class="namedatediv"> 
           <asp:Label ID="namelbl" CssClass="grdnamelbl" runat="server" Text='<%# Eval("Name") %>'></asp:Label> 
           <br /> 
           <asp:Label ID="datelbl" CssClass="grddatelbl" runat="server" Text='<%# Eval("Date") %>'></asp:Label> 
          </div> 
          <div class="grdmsgdiv"> 
           <asp:Label ID="msglbl" CssClass="grdmsg" runat="server" Text='<%# Eval("ReqInfo") %>'></asp:Label> 
           <br /> 
           <br /> 
           <asp:Label ID="Label1" CssClass="grddatelbl" runat="server" Text="Address:"></asp:Label> 
           <br /> 
           <asp:Label ID="addrlbl" CssClass="grdmsg" runat="server" Text='<%# Eval("reqaddress") %>'></asp:Label> 
          </div> 
          <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
           <ContentTemplate> 
            <div class="errdiv"> 
             <asp:Label ID="errorlbl" CssClass="errlbl" runat="server" Text=""></asp:Label> 
            </div> 
            <div class="grdtxtdiv"> 
             <asp:TextBox ID="reqconvrstxt" CssClass="gridtxt" runat="server" TextMode="MultiLine" Columns="26" Rows="4"></asp:TextBox> 
             <asp:TextBoxWatermarkExtender ID="msgconttxt_TextBoxWatermarkExtender" runat="server" Enabled="True" TargetControlID="reqconvrstxt" WatermarkText="Write your opinion here.."> 
             </asp:TextBoxWatermarkExtender> 
            </div> 
            <div class="grdsndbtndiv"> 
             <asp:Button ID="grdsubbtn" CssClass="grdinsrtbtn" runat="server" Text="Submit" CommandArgument='<%# Eval("ReqConversId") %>' CommandName="reqbooksget" /> 
            </div> 
           </ContentTemplate> 
          </asp:UpdatePanel> 
          <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
           <ContentTemplate> 
            <div class="inrgrdopenbtndiv"> 
             <asp:Button ID="grdconvrsbtn" CssClass="grdopnconvrbtn" runat="server" Text="Open all conversions" CommandArgument='<%# Eval("ReqConversId") %>' CommandName="reqconversget" /> 
            </div> 
            <div class="inrgrddiv"> 
             <asp:GridView ID="reqchildgrd" CssClass="inrgrd" runat="server" Visible="false" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="None" AllowPaging="True" OnPageIndexChanging="reqchildgrd_PageIndexChanging1"> 
              <AlternatingRowStyle BackColor="#E4FFCA" /> 
              <Columns> 
               <asp:TemplateField HeaderStyle-CssClass="inrgrdhead" HeaderText="User's comments.. of above book betails"> 
                <ItemTemplate> 
                 <div class="namedatediv"> 
                  <asp:Label ID="inrlbl1" CssClass="grdnamelbl" runat="server" Text='<%# Eval("Name") %>'></asp:Label> 
                  <br /> 
                  <asp:Label ID="inrlbl2" CssClass="grddatelbl" runat="server" Text='<%# Eval("Date", "{0:M-dd-yyyy}") %>'></asp:Label> 
                 </div> 
                 <div class="grdmsgdiv"> 
                  <asp:Label ID="inrlbl3" CssClass="grdmsg" runat="server" Text='<%# Eval("ConvrsMessage") %>'></asp:Label> 
                 </div> 
                </ItemTemplate> 
               </asp:TemplateField> 
              </Columns> 
              <EmptyDataTemplate> 
               <div class="emptytemp"> 
                At present we don't have any result's from your request.... 
               </div> 
              </EmptyDataTemplate> 
              <RowStyle BackColor="#FFCEFF" /> 
             </asp:GridView> 
             <br /> 
            </div> 
           </ContentTemplate> 
          </asp:UpdatePanel> 
         </ItemTemplate> 

         <HeaderStyle CssClass="grdhead"></HeaderStyle> 
        </asp:TemplateField> 
       </Columns> 
       <EmptyDataTemplate> 
        <div class="emptytemp"> 
         At present we don't have any result's from your request.... 
        </div> 
       </EmptyDataTemplate> 
       <RowStyle BackColor="#FFFFC4" /> 
      </asp:GridView> 

2.Bind meine Eltern gridview in Pageload:

protected void Page_Load(object sender, EventArgs e) 
      { 
       if (!IsPostBack) 
       { 
        reqparentgird.DataSource = dataaccesslayer.getallreqedbks(); 
        reqparentgird.DataBind(); 
       } 
      } 

3.Then meine Eltern gridview habe rowcommand events für execute insertcommand und binding innergridview, wenn button click

4.Dies ist mein ge tallreqconvermsg (conversid) Methode:

public static List<getreqbkconvrs> getallreqconvermsg(string conversid) 
     { 
      List<getreqbkconvrs> convrsreqbk = new List<getreqbkconvrs>(); 
      string cs = ConfigurationManager.ConnectionStrings["mpdbcs"].ConnectionString; 
      using (SqlConnection conn = new SqlConnection(cs)) 
      { 
       SqlCommand getreqbkconverscmd = new SqlCommand("getallreqconvers", conn); 
       getreqbkconverscmd.CommandType = CommandType.StoredProcedure; 
       getreqbkconverscmd.Parameters.AddWithValue("@conversid", conversid); 
       conn.Open(); 
       SqlDataReader reqconves = getreqbkconverscmd.ExecuteReader(); 
       while (reqconves.Read()) 
       { 
        getreqbkconvrs reqbkconves = new getreqbkconvrs(); 
        reqbkconves.Name = reqconves["Uname"].ToString(); 
        reqbkconves.ConvrsMessage = reqconves["ConvrsMessage"].ToString(); 
        reqbkconves.Date = Convert.ToDateTime(reqconves["Date"]); 
        convrsreqbk.Add(reqbkconves); 
       } 
       return convrsreqbk; 
      } 
     } 

5.Now i add pagging um parentgidview aspx.cs diese fein funktioniert:

protected void reqparentgird_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     reqparentgird.PageIndex = e.NewPageIndex; 
     bindGridView(); 
    } 
    private void bindGridView() 
    { 
     reqparentgird.DataSource = dataaccesslayer.getallreqedbks(); 
     reqparentgird.DataBind(); 
    } 

6.Now i pagging hinzufügen möchten, dies innergridveiw, i benutze pageIndexchange Event in diesem Fall benoetigt Databind erneut, so dass ich "conversid" als Argument fuer Databinding uebergeben will, aber "conversid value kommt vom Befehlsargument" meine Frage ist, wie man Befehlsargument in pageIndexchanging-Ereignis fuer aufrufende Methode mit einzelnen Parametern bekommt.

protected void reqchildgrd_PageIndexChanging(object sender, GridViewPageEventArgs e) 
      { 
       GridView childgrd = (sender as GridView);    
       childgrd.PageIndex = e.NewPageIndex; 
       string conversid = e.CommandArgument.ToString(); 
     inrgrdview.DataSource = dataaccesslayer.getallreqconvermsg(conversid); 
       inrgrdview.DataBind(); 
      } 

7.This ist der Fehler bekommen, wenn ich zu meinem innergirdview in Pageindexchanging-Ereignis pagging add:

'System.Web.UI.WebControls.GridViewPageEventArgs'does not contain a definition for 
'commandargument' and no extension method 'commandargument' accepting a first argument of type 
'System.Web.UI.Webcontrols.GridViewPageEventArgs' could be found (are you missing a using directive or an assembly reference?) 

Antwort

0

Wenn Sie string conversid = e.CommandArgument.ToString(); in mehreren Methoden verwenden möchten, müssen Sie conversid als Variable deklarieren in deine Klasse.

Beispiel:

 public class MyClass 
     { 

     private string lastConversid; 

     ... 

     else if (e.CommandName == "reqconversget") 
        { 
         this.lastConversid= e.CommandArgument.ToString(); 
     int rowindx = ((GridViewRow)Button)e.CommandSource).NamingContainer).RowIndex; 
         GridView inrgrdview = (GridView)reqparentgird.Rows[rowindx].FindControl("reqchildgrd"); 

     inrgrdview.DataSource = dataaccesslayer.getallreqconvermsg(this.lastConversid); 
          inrgrdview.DataBind(); 
        } 

     .... 

     protected void reqchildgrd_PageIndexChanging(object sender, GridViewPageEventArgs e) { 
     GridView childgrd = (sender as GridView); 
     childgrd.PageIndex = e.NewPageIndex; 

     inrgrdview.DataSource = dataaccesslayer.getallreqconvermsg(this.lastConversid); 
     inrgrdview.DataBind(); 
     } 

    } 
+0

Ich versuche dies, dies ist der Fehler im Browser, wenn ich Schaltfläche "Weiter" in pagging innergridview klicken. Prozedur oder Funktion 'getallreqconvers' erwartet den Parameter '@conversid', der nicht mitgeliefert wurde. – nagendra

+0

Hör zu, versteh mich nicht falsch, aber weißt du eigentlich was du willst? Außerdem fällt mir ein, dass dies deine Hausaufgaben sind. – lokusking

+0

Ihre angegebene Logik ist richtig, aber es wird nicht Wert in pageIndexchanging event.i versuchen, e.commandargument.tostring() Wert in Sitzung setzen und Aufruf pageIndexchanging Ereignis funktioniert gut und erreichen meine Anforderung, aber ich nicht nein dies ist richtiger Weg oder nicht. Ich bin ein Student, und ich versuche, eine Web site zu schaffen, dieser Code ist ein Teil meiner website.Thankyou lokusking. – nagendra