2010-12-02 13 views
0

Ich habe Probleme beim Versuch, ein rowcommand -Ereignis in einer Gridview auszulösen. Ich folgte dem Codebeispiel von MSDNet, aber ich kann nicht herausfinden, warum es nicht funktioniert. Der Code ist unten. Vielen Dank.Gridview RowCommand funktioniert nicht

<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 

Antwort

4

Ihr gridview hat das Ereignis in seinem Markup nicht verdrahtet.

Versuchen in onrowcommand="GridViewProducts_RowCommand" Zugabe so sieht es wie folgt aus:

<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

Danke Ihr Problem lösen so sehr!! Das war das Problem. Kann noch eine Frage stellen? Ist dies der richtige Weg, um den zweiten Spaltenwert zu erhalten? – Mike

+0

Dim MyString als String = row.Cells (1) .Text Ich versuche, den Wert aus Spalte 2 zu erhalten. – Mike

0

@rtpHarry korrekt ist, und das ist ein gültiger Weg, um die Veranstaltung zu verkabeln. Eine andere Methode, um die Veranstaltung der Verdrahtung wäre die Signatur Ihrer Methode zu ändern, hinter im Code Handles Me.GridViewProducts.RowCommand bis zum Ende hinzuzufügen:

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

sollten Sie einige Erklärung hinzufügen, um den Code, den Sie gepostet haben, zu sichern. – Caribou

0

Ansicht aktivieren Staat = true

Verwandte Themen