2010-12-02 7 views
0

Je rencontre des problèmes pour essayer de déclencher un événement rowcommand dans un gridview. J'ai suivi l'exemple de code de MSDNet mais je n'arrive pas à comprendre pourquoi cela ne fonctionne pas. Le code est ci-dessous. Je vous remercie.Gridview RowCommand ne fonctionne pas

<asp:GridView ID="GridViewProducts" runat="server" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" 
    CellPadding="5" CellSpacing="1" DataKeyNames="Pkey" 
    DataSourceID="SqlDataSourceProducts" ForeColor="Black" GridLines="Vertical"> 
    <FooterStyle BackColor="#CCCCCC" /> 
    <PagerSettings PageButtonCount="20" /> 
    <Columns> 
     <asp:BoundField DataField="Product" HeaderText="Product" > 
      <HeaderStyle HorizontalAlign="Left" /> 
      <ItemStyle HorizontalAlign="Left" /> 
     </asp:BoundField> 
     <asp:TemplateField HeaderText="Interest"> 
      <ItemTemplate> 
       <asp:DropDownList ID="ddlProductInterest" runat="server" SelectedValue='<%# Bind("ProductInterest") %>'> 
        <asp:ListItem></asp:ListItem> 
        <asp:ListItem>Low</asp:ListItem> 
        <asp:ListItem>Medium</asp:ListItem> 
        <asp:ListItem>High</asp:ListItem> 
        <asp:ListItem>None</asp:ListItem> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText=""> 
      <ItemTemplate> 
       <asp:Button runat="server" ID="TestButton" Text="Button" CommandName="Test" 
       CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>" /> 
      </ItemTemplate> 
      <HeaderStyle HorizontalAlign="center" /> 
      <ItemStyle HorizontalAlign="center" /> 
     </asp:TemplateField> 
    </Columns> 
    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
    <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="Silver" Font-Bold="True" ForeColor="Black" /> 
    <AlternatingRowStyle BackColor="#CCCCCC" /> 
</asp:GridView> 

++Code Behind +++ 

Sub GridViewProducts_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) 

    If e.CommandName = "Test" Then 

    Dim index = Convert.ToInt32(e.CommandArgument) 
    Dim row = GridViewProducts.Rows(index) 
    Dim MyString As String = row.Cells(0).Text 

    strSQL = "INSERT INTO tblClosedProducts (" & _ 
     "Product, ClosedBy, DateClosed " & _ 
     ") VALUES (" & _ 
     "@Product, @ClosedBy, @DateClosed " & _ 
     ")" 

    Dim MyParameters1 As SqlParameter() = { _ 
     New SqlParameter("@Product", SqlDbType.VarChar), _ 
     New SqlParameter("@ClosedBy", SqlDbType.VarChar), _ 
     New SqlParameter("@DateClosed", SqlDbType.SmallDateTime) _ 
    } 

    MyParameters1(0).Value = row.Cells(0).Text 
    MyParameters1(1).Value = GetInfo.GetFullName(UCase(Right(HttpContext.Current.User.Identity.Name.ToString(), 4))) 
    MyParameters1(2).Value = DateAdd("h", -1, Now()) 

    objData.SQLExecuteNonQuery(strSQL, CommandType.Text, MyParameters1) 

    End If 

End Sub 

Répondre

4

Votre grille n'a pas l'événement câblé dans son balisage.

Essayez d'ajouter à onrowcommand="GridViewProducts_RowCommand" il ressemble à ceci:

<asp:GridView ID="GridViewProducts" runat="server" AutoGenerateColumns="False" 
BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" 
CellPadding="5" CellSpacing="1" DataKeyNames="Pkey" 
DataSourceID="SqlDataSourceProducts" ForeColor="Black" GridLines="Vertical" 
onrowcommand="GridViewProducts_RowCommand"> 
+0

Merci tellement de!! c'était le problème. Peut poser une question de plus? Est-ce la bonne façon d'obtenir la valeur de la deuxième colonne? – Mike

+0

Dim MyString As String = row.Cells (1) .Text J'essaie d'obtenir la valeur de la colonne 2. – Mike

0

@rtpHarry est correct, et qui est un moyen valable pour câbler l'événement. Une autre méthode de câblage de l'événement serait de changer la signature de votre méthode dans le code derrière pour ajouter Handles Me.GridViewProducts.RowCommand à la fin:

Sub GridViewProducts_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles Me.GridViewProducts.RowCommand 
0
protected void Add_Update_Remove_Row(int Index, string Operation) 
{ 
    //DataTable dt = (DataTable)ViewState["Table_BinaryPayment"]; 

    int ID = Index; 

    Label lblddt = (Label)GridView1.Rows[Index].FindControl("Label2"); 
    Label lblttm = (Label)GridView1.Rows[Index].FindControl("Label1"); 
    Label lblid = (Label)GridView1.Rows[Index].FindControl("lblID"); 
    Label lblaeamt = (Label)GridView1.Rows[Index].FindControl("lblamt"); 

    Label lblprojID = (Label)GridView1.Rows[Index].FindControl("lblprojectID"); 
    Label lblpaydetails = (Label)GridView1.Rows[Index].FindControl("lblpaydetails"); 
    Label lblexpdate = (Label)GridView1.Rows[Index].FindControl("lblExpDate"); 
    Label lblexpttime = (Label)GridView1.Rows[Index].FindControl("lblExpTime"); 

    Label lblalloycodes = (Label)GridView1.Rows[Index].FindControl("lblalloycode"); 
    Label lblalloyrates = (Label)GridView1.Rows[Index].FindControl("lblalloyRate"); 
    Label lbladddelivered = (Label)GridView1.Rows[Index].FindControl("lbladdtodeliver"); 
    Label lblEID = (Label)GridView1.Rows[Index].FindControl("lblEID"); 

    ViewState["DispTime"] = lblttm.Text; 
    ViewState["ExpTime"] = lblexpttime.Text; 

    if (Operation == "Modify") 
    { 
     //lblchqNo.Text = txtchequeNO1.Text; 
     //lblchqDate.Text = txtchequeDate1.Text; 
     //lblAccountNo.Text = txtAccountNo.Text; 
     //lblBName.Text = txtBankName.Text; 
     lblddt.Text = txtdispdate.Text; 

     if (ddldisphr.SelectedItem.Text == "00" & ddldispmin.SelectedItem.Text == "00" & ddldispsec.SelectedItem.Text == "00") 
     { 
      lblttm.Text = ViewState["DispTime"].ToString(); 

     } 
     else 
     { 
      lblttm.Text = (ddldisphr.SelectedItem.Text + ":" + ddldispmin.SelectedItem.Text + ":" + ddldispsec.SelectedItem.Text); 
     } 

     if (ddlexphr.SelectedItem.Text == "00" & ddlexpmin.Text == "00" & ddlexpsec.Text == "00") 
     { 
      lblexpttime.Text = ViewState["ExpTime"].ToString(); 
     } 
     else 
     { 
      lblexpttime.Text = (ddlexphr.SelectedItem.Text + ":" + ddlexpmin.Text + ":" + ddlexpsec.Text); 
     } 

     lblaeamt.Text = txtadvPayment.Text; 

     lblpaydetails.Text = txtpaymentdetails.Text; 
     lblexpdate.Text = txtexpdate.Text; 

     lblalloycodes.Text = ddlalloycode.SelectedItem.Text; 
     lblalloyrates.Text = txtalloyrate.Text; 
     lbladddelivered.Text = txtaadtodel.Text; 

     //ExecuteProcedures ex = new ExecuteProcedures(4); 
     //string proc="Inse_Clientorder"; 
     //ex.Parameters.Add("@dtPayment_Date", SqlDbType.DateTime, lblddt.Text); 
     //ex.Parameters.Add("@Dispath_Time", SqlDbType.VarChar, lblttm.Text); 
     //ex.Parameters.Add("@Enquiry_ID", SqlDbType.VarChar, ID); 
     //ex.Parameters.Add("@numAdvance_Amount", SqlDbType.Float , Convert.ToDouble(txtadvPayment.Text)); 
     //bool s = ex.InvokeProcedure(proc); 

     ExecuteProcedures ex = new ExecuteProcedures(12); 
     //string proc = "Inse_Clientorder123"; 
     string proc = "Inse_Clientorder321"; 
     ex.Parameters.Add("@dtPayment_Date", SqlDbType.DateTime, Convert.ToDateTime(lblddt.Text)); 
     //if (ddldisphr.SelectedItem.Text == "00" & ddldispmin.SelectedItem.Text == "00" & ddldispsec.SelectedItem.Text == "00") 
     //{ 
     // ex.Parameters.Add("@Dispath_Time", SqlDbType.VarChar, ViewState["DispTime"]); 

     //} 
     //else 
     //{ 
     // ex.Parameters.Add("@Dispath_Time", SqlDbType.VarChar, lblttm.Text); 
     //} 

     //if (ddlexphr.SelectedItem.Text == "00" & ddlexpmin.Text == "00" & ddlexpsec.Text == "00") 
     //{ 
     // ex.Parameters.Add("@ExpTime", SqlDbType.VarChar, ViewState["ExpTime"]); 
     //} 
     //else 
     //{ 
     // ex.Parameters.Add("@ExpTime", SqlDbType.VarChar, lblexpttime.Text); 
     //} 

     ex.Parameters.Add("@Dispath_Time", SqlDbType.VarChar, lblttm.Text); 
     ex.Parameters.Add("@ExpTime", SqlDbType.VarChar, lblexpttime.Text); 

     ex.Parameters.Add("@Advance_Payment_ID", SqlDbType.Int, Convert.ToInt32(lblid.Text)); 
     ex.Parameters.Add("@numAdvance_Amount", SqlDbType.VarChar, lblaeamt.Text); 

     ex.Parameters.Add("@AlooyCode", SqlDbType.VarChar, lblalloycodes.Text); 
     ex.Parameters.Add("@numRate", SqlDbType.Float, Convert.ToDouble(lblalloyrates.Text)); 
     ex.Parameters.Add("@vcrDescription", SqlDbType.VarChar, lbladddelivered.Text); 
     ex.Parameters.Add("@Client_Ordered_Projects_ID", SqlDbType.Int, Convert.ToInt32(lblprojID.Text)); 
     ex.Parameters.Add("@Enquiry_ID", SqlDbType.Int, Convert.ToInt32(lblEID.Text)); 

     ex.Parameters.Add("@dtExpectedPayment_Date", SqlDbType.DateTime, Convert.ToDateTime(lblexpdate.Text)); 

     ex.Parameters.Add("@vcrPayment_Details", SqlDbType.VarChar, lblpaydetails.Text); 

     bool s = ex.InvokeProcedure(proc); 

     if (s == true) 
     { 
      CommonFunctions.Alert("Records Updated Successfully", this.Page); 

     } 
     else 
     { 
      CommonFunctions.Alert("Error In Updation", this.Page); 
     } 

     clear(); 

    } 
} 

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    //if (e.CommandName == "Modify") 
    //{ 
    // string strID = e.CommandArgument.ToString(); 
    // strID = CommonFunctions.Encrypt(strID); 
    // Response.Redirect("Client_Order.aspx?Project_ID=" + strID); 
    //} 

    if (e.CommandName == "Modify") 
    { 

     string strID = e.CommandArgument.ToString(); 
     int intRowIndex = ((GridViewRow)((LinkButton)e.CommandSource).Parent.Parent).RowIndex; 
     //Session[rowindex] = intRowIndex; 
     txtdispdate.Text = GridView1.Rows[intRowIndex].Cells[6].Text; 
     string strdisp = ((ddldisphr.SelectedItem.Text) + ":" + (ddldispmin.SelectedItem.Text) + ":" + (ddldispsec.SelectedItem.Text)).ToString(); 
     lbltime.Text = GridView1.Rows[intRowIndex].Cells[7].Text; 
     Label lblClienorderiid = (Label)GridView1.Rows[intRowIndex].FindControl("lblcLOID"); 
     Label lbledate = (Label)GridView1.Rows[intRowIndex].FindControl("Label2"); 
     Label lbletime = (Label)GridView1.Rows[intRowIndex].FindControl("Label1"); 
     Label lbliid = (Label)GridView1.Rows[intRowIndex].FindControl("lblID"); 
     Label lblaamt = (Label)GridView1.Rows[intRowIndex].FindControl("lblamt"); 
     Label lblEID = (Label)GridView1.Rows[intRowIndex].FindControl("lblEID"); 

     Label lblprojID = (Label)GridView1.Rows[intRowIndex].FindControl("lblprojectID"); 
     Label lblpaydetails = (Label)GridView1.Rows[intRowIndex].FindControl("lblpaydetails"); 
     Label lblexpdate = (Label)GridView1.Rows[intRowIndex].FindControl("lblExpDate"); 
     Label lblexpttime = (Label)GridView1.Rows[intRowIndex].FindControl("lblExpTime"); 

     Label lblalloycodes = (Label)GridView1.Rows[intRowIndex].FindControl("lblalloycode"); 
     Label lblalloyrates = (Label)GridView1.Rows[intRowIndex].FindControl("lblalloyRate"); 
     Label lbladddelivered = (Label)GridView1.Rows[intRowIndex].FindControl("lbladdtodeliver"); 

     ViewState["Index"] = intRowIndex; 
     ViewState["CommandName"] = e.CommandName; 

     txtdispdate.Text = lbledate.Text; 
     lbltime.Text = lbletime.Text; 
     txtadvPayment.Text = lblaamt.Text; 
     ddlalloycode.SelectedItem.Text = lblalloycodes.Text; 
     txtalloyrate.Text = lblalloyrates.Text; 
     txtaadtodel.Text = lbladddelivered.Text; 
     txtpaymentdetails.Text = lblpaydetails.Text; 
     txtexpdate.Text = lblexpdate.Text; 
     lblexptimess.Text = lblexpttime.Text; 

     pnl2.Visible = true; 
     //lbltime.Text = lbltm.Text; 

     //Add_Update_Remove_Row(intRowIndex , e.CommandName); 
    } 

    else if (e.CommandName == "Del") 
    { 
     string strID = e.CommandArgument.ToString(); 
     string strSql = "Delete from Client_Order where Client_ID = " + strID; 
     string str_query = "Update Enquiry set OrderExecuted='No' where Enquiry_ID = " + strID; 
     //string str_query = "delete from Enquiry where Enquiry_ID = " + strID; 
     Dentry de = new Dentry(); 
     de.RunCommand(strSql); 
     de.RunCommand(str_query); 
     Bind_Data(); 
    }  
    else if(e.CommandName =="Invoice") 
    { 
     string strID = e.CommandArgument.ToString(); 
     strID = CommonFunctions.Encrypt(strID); 
     string strType = CommonFunctions.Encrypt("New"); 
     Response.Redirect("New_Order_Project_Invoice_Entry.aspx?Project_ID=" + strID + "&Type=" + strType); 
    } 
    else if (e.CommandName == "Delivered") 
    { 
     string strId = e.CommandArgument.ToString(); 
     string str_query = "Update Enquiry set vcrDelivered='Yes' where Enquiry_ID=" + strId; 
     Dentry de = new Dentry(); 
     de.RunCommand(str_query); 
     Bind_Data(); 
    } 
} 

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowIndex > -1) 
    { 
     LinkButton lnk = (LinkButton)e.Row.FindControl("lnkDelete"); 
     lnk.Attributes.Add("onClick", "return confirm('Are you sure to delete this record?');"); 
    } 
} 
+0

vous devriez ajouter quelques explications pour sauvegarder le code que vous avez publié. – Caribou

0

Activer l'affichage Etat = true résoudra votre problème

Questions connexes