2010-12-02 2 views
0

gridview에서 발생시키는 rowcommand 이벤트를 가져 오는 데 문제가 있습니다. MSDNet의 코드 예제를 따랐지만 왜 작동하지 않는지 알 수는 없습니다. 코드는 다음과 같습니다. 고맙습니다.Gridview RowCommand가 작동하지 않습니다.

<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 

답변

4

귀하의 gridview는 이벤트에 마크 업을 사용하지 않습니다.

<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

감사합니다 당신의 문제를 해결할 사실 너무 많이 !! 그게 문제 였어. 질문 하나 더 할 수 있습니까? 두 번째 열 값을 가져 오는 올바른 방법입니까? – Mike

+0

Dim MyString As String = row.Cells (1). 텍스트 2 열의 값을 가져 오려고합니다. – Mike

0

@rtpHarry이 올바른지, 그 이벤트를 연결할 수있는 유효한 방법입니다 onrowcommand="GridViewProducts_RowCommand"에 추가

시도는 그래서는 다음과 같습니다. 이벤트를 배선의 또 다른 방법은 뒤에 끝에 Handles Me.GridViewProducts.RowCommand를 추가하는 코드에서 메소드의 서명을 변경하는 것입니다 :

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

게시 한 코드를 백업하기 위해 몇 가지 설명을 추가해야합니다. – Caribou

관련 문제