2016-09-15 10 views
0

私はgridview ASP.netでMS-SQLデータベースから特定の列を取得しました。データが正しく表示されていて、グリッドビューに付属のボタンを使用して必要に応じて編集したり削除したりできました。gridviewでエラーが発生しました

これでデータベースに新しい列が追加され、コードが更新されました。

新しいdatasourceを作成しました。これでdbからその列を取得できました。 gridviewにeditdeleteが表示されないという問題がありましたが、AutoGenerateDeleteButton="true"AutoGenerateEditButton="true"を使用して表示することができました。

ただし、削除ボタンまたは編集ボタンを押すと、以下のエラーが表示されます。

Unable to cast object of type 'System.Web.UI.WebControls.GridView' to type 'System.Web.UI.WebControls.LinkButton'. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. ` 

Exception Details: System.InvalidCastException: Unable to cast object of type 'System.Web.UI.WebControls.GridView' to type 'System.Web.UI.WebControls.LinkButton'. 

Source Error: 

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
LinkButton lnkbtn = ((LinkButton)e.CommandSource); 
GridViewRow gvRow = (GridViewRow)(lnkbtn.NamingContainer); 
HiddenField hdn_supplier = (HiddenField)gvRow.FindControl("hdn_supplier"); 
} 

+0

中で動けなくなる場合には、うまくいけば、正しい方向にあなたを指す必要が働いているVBで同じ例でありますGridView1_RowCommandをテストしていない場合は、eがリンクボタンであり、CommandSourceを参照しようとしています。 eの型をテストしたいかもしれません。 if((LinkBut​​tonとしてのe)== null) –

答えて

0

これは私が今のところ行っている作業用VBコードのC#の例です。あなたがあなたの削除称賛ハンドラを逃すように見えます

protected void dgGlossaries_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) 
{ 
    dynamic rowToDelete = e.Item.ItemIndex; 
    DataTable dt = (DataTable)Session["glossaries"]; 
    DataRow dr = dt.Rows(rowToDelete); 
    dr.Delete(); 
    dgGlossaries.DataSource = dt; 
} 

これはあなたがC#の例

Protected Sub dgGlossaries_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgGlossaries.DeleteCommand 
    Dim rowToDelete = e.Item.ItemIndex 

    Dim dt As DataTable = DirectCast(Session("glossaries"), DataTable) 
    Dim dr As DataRow = dt.Rows(rowToDelete) 
    dr.Delete() 

    dgGlossaries.DataSource = dt 
    dgGlossaries.DataBind() 
End Sub 
関連する問題