【问题标题】:Unable to cast object of type 'Obout.Grid.GridTemplate' to type 'System.Web.UI.WebControls.GridViewRow'. not resolving无法将“Obout.Grid.GridTemplate”类型的对象转换为“System.Web.UI.WebControls.GridViewRow”类型。没有解决
【发布时间】:2017-02-21 12:13:43
【问题描述】:

我想disable gridview 在gridview 内的按钮单击上的行。为此,我编写了以下代码。

protected void btnPayGenInvoice_Click(object sender, EventArgs e)
{
    if (strMode == "M")
    {
        Button btn = (Button)sender;
        GridViewRow row = (GridViewRow)btn.Parent.Parent;
        row.Enabled = false;
    }
}

但我收到错误

无法将“Obout.Grid.GridTemplate”类型的对象转换为“System.Web.UI.WebControls.GridViewRow”类型。

请告诉我这里出了什么问题

更新

GridViewRow row = (GridViewRow)btn.Parent.Parent; 行出现错误

更新 2

按钮点击事件的代码。

protected void GetRowDataPay(object sender, CommandEventArgs e)
{
    int rowIndex = int.Parse(e.CommandArgument.ToString());

    Hashtable dataItemPay = GridPayInfo.Rows[rowIndex].ToHashtable() as Hashtable;

    if (ObjPriCon.State != ConnectionState.Open)
    {
        ObjPriCon.Open();
        OracleCommand cmdMkeyPay = new OracleCommand("select XXCUS.XXACL_LAND_PURC_INV_VIEW_MKEY.nextval from dual", ObjPriCon);
        string MkeyPay = Convert.ToString(cmdMkeyPay.ExecuteOracleScalar());

        OracleCommand cmdORGID = new OracleCommand("select XXCUS.XXACL_LAND_PURC_INV_VIEW_MKEY.nextval from dual", ObjPriCon);
        string ORG_IDKEY = CF.ExecuteScaler2("select ORGANIZATION_ID,ORGANIZATION_NAME from apps.xxacl_company_mst where ORGANIZATION_NAME = '" + txtCompName.Value + "'");

        string strExpQuery = "insert into XXCUS.XXACL_LAND_PURC_INVOICE_VIEW (MKEY,REF_PURCHASE_ID,REF_SR_NO, " +
                         "REF_PURHCASE_TYPE,ORG_ID,PROJECT_ID,TALUKA_ID,VILLAGE_ID,SURVEY_AREA_7_12,DOC_NO,INVOICE_ID,INVOICE_NUM,VENDOR_ID, " +
                         "VENDOR_NAME,INVOICE_AMT,BATCH_ID,BATCH_NAME,EXP_ID,EXP_TYPE,REMARKS,CREATED_BY, " +
                         "CREATION_DATE,LAST_UPDATE_DATE,LAST_UPDATED_BY, EXP_ORG_ID, EXP_ORG_NAME) values (" + MkeyPay + "," + StrMkey + "," +
                         "" + dataItemPay["SR_NO"] + ", '" + dataItemPay["ATTRIBUTE1"] + "'," + ORG_IDKEY + "," + ddlProject.SelectedValue + "," +
                         "" + ddlTaluka.SelectedValue + "," + ddlVillage.SelectedValue + ", '" + txt712.Text + "', '" + txtdocno.Value + "'," + "NULL" + "," + "NULL" + "," +
                         "" + dataItemPay["ORACLE_VENDOR_ID"] + ", '" + dataItemPay["ORACLE_VEND_NAME"] + "', " + dataItemPay["PAID_AMT"] + "," + dataItemPay["BATCH_ID"] + "," +
                         "'" + dataItemPay["BATCH_NAME"] + "', " + dataItemPay["EXP_ID"] + ", '" + dataItemPay["EXP_TYPE"] + "', '" + dataItemPay["REMARKS"] + "', " +
                         "" + Request.QueryString["userid"].ToString() + ", sysdate, sysdate, " +
                         "'" + Request.QueryString["userid"].ToString() + "', " + "NULL" + "," + "NULL" + ")";
        OracleCommand cmdQuery = new OracleCommand(strExpQuery, ObjPriCon);
        cmdQuery.ExecuteNonQuery();
        ObjPriCon.Close();
        ScriptManager.RegisterStartupScript(this, this.GetType(), "Success", "alert('Payment Invoice inserted into table successfully');", true);
    }
}

【问题讨论】:

  • 您要禁用哪一行。 Yiu 需要获取您想要禁用的选定行并将其传递给代码。那么您可以禁用该行。
  • @YashveerSingh:是的,我想禁用单击按钮的行。
  • 好的,所以您必须有一个选定的行事件,当您在该事件上选择该记录时将触发该事件,您可以执行此操作。
  • 我将更新我的问题中的事件代码。请让我知道如何获取选定的行并禁用它。
  • 好的,我会努力的

标签: c# asp.net gridview obout


【解决方案1】:

您应该使用 rowIndex 值来获取 gridviewrow,然后像这样禁用它

if (GridPayInfo.Rows[rowIndex] != null) 
{ 
  GridPayInfo.Rows[rowIndex].Enabled = false; 
}

【讨论】:

  • protected void btnPayGenInvoice_Click(object sender, EventArgs e) { if (GridPayInfo.Rows[rowIndex] != null) { if (strMode == "M") { Button btn = (Button)sender; GridViewRow.Rows[rowIndex].Enabled = false; } } }
  • 感谢 Yashveer,这个运行得非常好..!!需要知道如何禁用删除部分。
  • 我还有很多其他问题,稍后会发布并让您知道。谢谢现在..祝你有美好的一天
  • 嗨@nad,没问题,请告诉我这个问题,我会尽力回答
  • @nad 是的,请告诉我
猜你喜欢
  • 2019-03-18
  • 2019-08-19
  • 1970-01-01
  • 2021-12-06
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
相关资源
最近更新 更多