2015-05-29 70 views
0

我不是很有經驗,也許我問一個愚蠢的問題。我試圖刪除這個GridView中的一行。爲此,我調用方法deleteDettagliDocument(id_row)從我的數據庫執行DELETE。此方法採用整數作爲參數,但控件是一個標籤,我無法正確轉換它。這是我的代碼。標籤轉換findcontrol

protected void grdContact_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    bool result; 
    DboDocument objdbo = new DboDocument(); 
    InvoiceDetails ID = new InvoiceDetails(); 
    List<InvoiceDetails> app = (List<InvoiceDetails>)Session["lst_details"]; 
    int id_row = (Label)grdContact.Rows[e.RowIndex].FindControl("lblId_Row"); // Error! 
    app.RemoveAt(e.RowIndex); 
    Session["lst_details"] = app; 
    FillGrid(); 
    CalculateTotal(); 
    result = objdbo.deleteDocumentDetails(id_row); 
} 
+1

您不能轉換'Label'成'int'。您可能想要將'Label'的文本屬性轉換爲int? –

+1

int'id'是否存儲在標籤上?更常見的方法是將其保存到隱藏字段中。但是你得到一個錯誤的原因是因爲你試圖給'int'分配一個'Label'類型。你需要得到它的值,如:'Convert.ToInt32((Label)grdContact.Rows [e.RowIndex] .FindControl(「lblId_Row」)。Text);' – DGibbs

回答

3

您試圖分配Labelint

Label lbl = grdContact.Rows[e.RowIndex].FindControl("lblId_Row") as Label; 
if(lbl != null) 
{ 
    int id_row = int.Parse(lbl.Text); 
} 
+0

謝謝!你讓我今天一整天都感覺很好。 –