2016-08-26 68 views
-3

我想更新gridview。在這裏,我使用了3層體系結構方法。沒有過載的方法需要4個參數

這是我的GridView。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="ResllerID" 
      ForeColor="#333333" GridLines="None" OnRowDeleting="DeleteRecord" EmptyDataText="There are no data records to display." 
     AllowPaging="True" AllowSorting="True" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" 
     AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" > 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
       <asp:TemplateField HeaderText="Reseller Name" SortExpression="ResellerName"> 
        <EditItemTemplate> 
         <asp:TextBox ID="ResellerTextBox" runat="server" Text='<%# Bind("ResellerName") %>'></asp:TextBox> 
        </EditItemTemplate> 
        <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("ResellerName") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Mobile Number" SortExpression="MobileNumber"> 
        <EditItemTemplate> 
         <asp:TextBox ID="MobileTextBox" runat="server" Text='<%# Bind("MobileNumber") %>'></asp:TextBox> 
        </EditItemTemplate> 
        <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Text='<%# Bind("MobileNumber") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 

        <asp:TemplateField HeaderText="Reference Number" SortExpression="ReferenceNumber"> 
        <EditItemTemplate> 
         <asp:TextBox ID="ReferenceTextBox" runat="server" Text='<%# Bind("ReferenceNumber") %>'></asp:TextBox> 
        </EditItemTemplate> 
        <ItemTemplate> 
       <asp:Label ID="Label3" runat="server" Text='<%# Bind("ReferenceNumber") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 

     </Columns> 
     <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
     <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
     <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
     <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
     <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
     <SortedDescendingHeaderStyle BackColor="#820000" /> 
    </asp:GridView> 

這裏是我的代碼:我收到錯誤ResellerBL.UpdateReseller(resellerId,name.Text,mobileNumber.Text,referenceNumber.Text);它說沒有超載的方法,這需要4個參數

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     GridView1.EditIndex = e.NewEditIndex; 
     GridView1.DataSource = ResellerBL.GetResellers(); 
     GridView1.DataBind(); 
    } 

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     int resellerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value); 
     TextBox name = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]; 
     TextBox mobileNumber = (TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]; 
     TextBox referenceNumber = (TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]; 

     ResellerBL.UpdateReseller(resellerId, name.Text, mobileNumber.Text, referenceNumber.Text); 

     GridView1.EditIndex = -1; 
     GridView1.DataSource = ResellerBL.GetResellers(); 
     GridView1.DataBind(); 
    } 

ResellerBL代碼:

public static void UpdateReseller(Reseller reseller) 
    { 
     string query = "UPDATE [Resellers] SET [ResellerName] = @ResellerName, [ReferenceNumber] = @ReferenceNumber WHERE [ResellerID] = @ResellerID"; 
     SqlCommand cmd = new SqlCommand(query); 

     cmd.Parameters.AddWithValue("@ResellerName", SqlDbType.Text).Value = reseller.ResellerName; 
     cmd.Parameters.AddWithValue("@MobileNumber", SqlDbType.Text).Value = reseller.MobileNumber; 
     cmd.Parameters.AddWithValue("@ReferenceNumber", SqlDbType.Text).Value = reseller.ReferenceNumber; 

     cmd.Parameters.AddWithValue("@ResllerID", SqlDbType.Text).Value = reseller.ResllerID; 

     DbUtility.UpdateDb(cmd); 
    } 
+1

錯誤告訴你到底是什麼問題..學習的一部分是理解的意思..如果你有一個方法,看看則params的數量,它需要..你不能傳遞更多的參數給方法期望更少 – MethodMan

回答

1

你用四個參數調用它:

ResellerBL.UpdateReseller(resellerId, name.Text, mobileNumber.Text, referenceNumber.Text); 

但它僅接受一個:

public static void UpdateReseller(Reseller reseller) 

兩個選項

  1. 創建一個新的經銷商對象,​​並傳遞:

var myreseller = New Reseller(); 
myresller.Id = resellerId; 
//etc 

ResellerBL.UpdateReseller(myreseller); 

OR

  • 修改(或添加一個重載)方法取四個參數:
  • public static void UpdateReseller(int resellerId, string resellerName, string resellerMobile, string resellerRefNum) 
    
    0

    UpdateReseller方法只有一個參數:一個reseller

    如果您希望能夠將單個零件傳遞給方法,則需要修改簽名或使用適當的參數創建重載。

    相關問題