kav@94 Ответов: 1

Становится исключением, поскольку не удается привести объект типа 'АСП.система home_aspx' в тип '.веб.пользовательского интерфейса.webcontrols.linkbutton'.


protected void grd1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
 string Eve1 = ViewState["SecondStatus"].ToString();
if (Eve1 == "Completeddays")
{
  lnkCompleted1_Click(this, new EventArgs());
}
}



protected void lnkCompleted1_Click(object sender, EventArgs e)
{
        strStatus = "Completedays";
        grd1.Visible = true;
        User1 = ((LinkButton)sender).CommandArgument; // here i am getting error as Unable to cast object of type 'ASP.home_aspx' to type 'System.Web.UI.WebControls.LinkButton'.
        DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
}



To be more clear i have two grids one grid just displays the count of tasks and username for example and on clicking that number 
i will get second grid with paging as it has so many records and on clicking paging i need to go to the event lnkCompleted1_Click
by passing username of that particular user whom we are viewing in second grid suppose if we click radha when i click on paging of
second grid i should pass that user radha to lnkCompleted1_Click event

<pre lang="text">User                   Completed batches
nandini                                         23
geetha                                           2
radha                                            4


Что я уже пробовал:

я получаю исключение как
Unable to cast object of type 'ASP.home_aspx' to type 'System.Web.UI.WebControls.LinkButton'. in tis event lnkCompleted1_Click

Karthik_Mahalingam

lnkCompleted1_Click(this, new EventArgs());
вышеприведенная строка не имеет смысла
объект "this" будет содержать экземпляр текущей страницы.
как событие будет знать, какая строка нажата?

Karthik_Mahalingam

в разбивке на страницы по какой ссылке вы хотите перейти?
сколько строк содержит сетка на каждой странице ?

Karthik_Mahalingam

ДУ, который вы хотите пройти в CommandArgument

Karthik_Mahalingam

Итак, при щелчке по страницам вам нужно передать идентификатор последней строки в событие lnkCompleted1_Click ?
правильно?
или какая-то другая логика?

вы будете нажимать кнопку страницы или кнопку ссылки в сетке? быть более конкретным

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

попробовать это

protected void lnkCompleted1_Click(object sender, EventArgs e)
       {
           string  User1 = ((LinkButton)sender).CommandArgument;
           ViewState["User1"] = User1;
           MyFunction();
       }

       protected void MyFunction() {
           strStatus = "Completedays";
           grd1.Visible = true;
           string User1 = ViewState["User1"]+"";
           DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);

       }

       protected void grd1_PageIndexChanging(object sender, GridViewPageEventArgs e)
       {
           string Eve1 = ViewState["SecondStatus"].ToString();
           if (Eve1 == "Completeddays")
           {
               MyFunction();
           }
       }


kav@94

но я получаю ошибку здесь сама знаешь
охраняемых недействительными lnkCompleted1_Click(объект отправителя, EventArgs в электронной)
{
строка User1 = ((LinkButton)sender).CommandArgument;
}

Karthik_Mahalingam

разместить разметку gridview

kav@94

мои наценки на gridview
наценка первого гривью
&ЛТ;в ASP:GridView в идентификатор="grd1" AutoGenerateColumns="false" - в HeaderStyle-свойства backcolor="#708090" CssClass="EU_DataTable" PagerStyle-цвет="черный" HeaderStyle-цвет="белый" атрибут runat="сервер" AllowPaging="true" в EmptyDataText="нет записи" ширина="100%"&ГТ;
<колонки>
&ЛТ;как ASP:BoundField HeaderText="пользователь" свойство datafield="дн" /&ГТ;
<asp:TemplateField HeaderText="новые партии">
<itemtemplate>
&ЛТ;как ASP:LinkButton элемент ID="lnkNewBatches" функция onclick="lnkNewBatches_Click" Имя_команды="выбрать опцию" CommandArgument='&л;%# Ивала("ДУ") %&ГТ;' атрибут runat="server"и&ГТ; и ASP:LinkButton&ГТ;


&ЛТ;АСП:шаблон HeaderText="бегут пачками"&ГТ; &ЛТ;%-- модифицированные работающие на выполняется--%&ГТ;
<itemtemplate>
&ЛТ;как ASP:LinkButton элемент ID="lnkRunningbatches" функция onclick="lnkRunningbatches_Click" Имя_команды="выбрать опцию" CommandArgument='&л;%# Ивала("ДУ") %&ГТ;' атрибут runat="сервер"и GT;


<asp:TemplateField HeaderText="CompletedBatches">
<itemtemplate>
&ЛТ;как ASP:LinkButton элемент ID="lnkCompletedBatches" функция onclick="lnkCompletedBatches_Click" Имя_команды="выбрать опцию" CommandArgument='&л;%# Ивала("ДУ") %&ГТ;' атрибут runat="сервер"и GT;



<RowStyle ForeColor="#000066" HorizontalAlign="Center" />


разметка второго вида сетки

&ЛТ;в ASP:GridView в идентификатор="grd2" атрибут runat="сервер" ShowFooter="истинный" CssClass="EU_DataTable" AutoGenerateColumns="false" - в EmptyDataText="нет записи"
OnPageIndexChanging="grdIndivuidualTask_PageIndexChanging" HeaderStyle-BackColor="#708090" PagerStyle-ForeColor="Black" HeaderStyle-ForeColor="White" AllowPaging="true" PageSize="2" Width="100%">
<колонки>
<asp:BoundField HeaderText="Name" DataField="Name" />
&ЛТ;как ASP:BoundField HeaderText="поле" свойство datafield="курс" /&ГТ;
<asp:BoundField HeaderText="присвоено" DataField="Dn" />
<asp:BoundField HeaderText="Status" DataField="WorkStatus" />

<RowStyle ForeColor="#000066" HorizontalAlign="Center" />

Karthik_Mahalingam

в сетке нет события lnkCompleted1_Click

kav@94

lnkCompletedBatches_Click это не что иное как lnkCompleted1_Click оба они одинаковы

Karthik_Mahalingam

пожалуйста, опубликуйте полную разметку, связанную с gridview

kav@94

хорошо вам нужен код обоих gridviews

Karthik_Mahalingam

первый код сетки

kav@94

хорошо конечно

kav@94

охраняемых недействительными lnkNewBatches_Click(объект отправителя, EventArgs в электронной)
{
strStatus = "NewBatches";
grd2.Видимое = истинное;
User1 = ((LinkButton)отправитель).CommandArgument;
DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
если (ДТ.Строк.Count > 0)
{
grd2.Источник данных = ДТ;
grd2.Привязку();
}
еще
{
grd2.Источник данных = значение null;
grd2.Привязку();
}
ViewState["SecondStatus"] = "NewBatches";
}
охраняемых недействительными lnkRunningbatches_Click(объект отправителя, EventArgs в электронной)
{
strStatus = "Runningbatches";
grd2.Видимое = истинное;
User1 = ((LinkButton)отправитель).CommandArgument;
DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
если (ДТ.Строк.Count > 0)
{
grd2.Источник данных = ДТ;
grd2.Привязку();
}
еще
{
grd2.Источник данных = значение null;
grd2.Привязку();
}
ViewState["SecondStatus"] = "Runningbatches";
}
охраняемых недействительными lnkCompletedBatches_Click(объект отправителя, EventArgs в электронной)
{
strStatus = "завершенные пакеты";
grd2.Видимое = истинное;
User1 = ((LinkButton)отправитель).CommandArgument;
DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
если (ДТ.Строк.Count > 0)
{
grd2.Источник данных = ДТ;
grd2.Привязку();
}
еще
{
grd2.Источник данных = значение null;
grd2.Привязку();
}
ViewState["SecondStatus"] = "CompletedBatches";
}

Подкачка второго вида сетки

охраняемых недействительными grd2_PageIndexChanging(объект отправителя, GridViewPageEventArgs е)
{
grd2.Pageindex было = Е.NewPageIndex;
строка Eve1 = ViewState["SecondStatus"].Метод toString();
если (!строка.IsNullOrEmpty(Eve1))
{
if (Eve1 == "CompletedBatches")
{
lnkCompletedBatches_Click(this, new EventArgs());

}
else if (Eve1 == "Runningbatches")
{
lnkRunningbatches_Click(это, новые EventArgs());
}
else if (Eve1 == "NewBatches")
{
lnkNewBatches_Click(this, new EventArgs());
}
}
grd2.Привязку();
}

Karthik_Mahalingam

попробовать это


 protected void lnkNewBatches() {
            strStatus = "NewBatches";
            grd2.Visible = true;
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "NewBatches";
        }

        protected void lnkRunningbatches() {
            strStatus = "Runningbatches";
            grd2.Visible = true;
          
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "Runningbatches";
        }

        protected void lnkCompletedBatches() {
            strStatus = "CompletedBatches";
            grd2.Visible = true;
          
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "CompletedBatches";
        }


        protected void lnkNewBatches_Click(object sender, EventArgs e)
        { 
            User1 = ((LinkButton)sender).CommandArgument;
            lnkNewBatches();
           
        }
        protected void lnkRunningbatches_Click(object sender, EventArgs e)
        {
            User1 = ((LinkButton)sender).CommandArgument;
            lnkRunningbatches();
        }
        protected void lnkCompletedBatches_Click(object sender, EventArgs e)
        {
            User1 = ((LinkButton)sender).CommandArgument;
            lnkCompletedBatches();
           
        }



        protected void grd2_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grd2.PageIndex = e.NewPageIndex;
            string Eve1 = ViewState["SecondStatus"].ToString();
            if (!string.IsNullOrEmpty(Eve1))
            {
                if (Eve1 == "CompletedBatches")
                {
                    lnkCompletedBatches();

                }
                else if (Eve1 == "Runningbatches")
                {
                    lnkRunningbatches();
                }
                else if (Eve1 == "NewBatches")
                {
                    lnkNewBatches();
                }
            }
            grd2.DataBind();
        }

kav@94

проблема в том, что мне нужно получить имя пользователя, чьи записи мы просматриваем во втором gridview, чтобы User1 = ((LinkButton)sender).CommandArgument; но мы этого не получаем

Karthik_Mahalingam

поскольку переменная user1 объявлена снаружи, то никаких проблем не возникнет.

kav@94

ни один пользователь1 не приходит пустым нам нужно получить имя пользователя строки,которую мы щелкаем в завершенных, новых или ожидающих пакетах для этого конкретного пользователя

Karthik_Mahalingam

пользователь1 прочитать значение из ViewState в

  protected void lnkNewBatches() {
            strStatus = "NewBatches";
            grd2.Visible = true;
            User1 = ViewState["User1"] + "";
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "NewBatches";
        }

        protected void lnkRunningbatches() {
            strStatus = "Runningbatches";
            grd2.Visible = true;
            User1 = ViewState["User1"] + "";
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "Runningbatches";
        }

        protected void lnkCompletedBatches() {
            strStatus = "CompletedBatches";
            grd2.Visible = true;
            User1 = ViewState["User1"] + "";
            DataTable dt = adm.getProjectsbyStatusbyUser(strStatus, txtDate2.Text, User1);
            if (dt.Rows.Count > 0)
            {
                grd2.DataSource = dt;
                grd2.DataBind();
            }
            else
            {
                grd2.DataSource = null;
                grd2.DataBind();
            }
            ViewState["SecondStatus"] = "CompletedBatches";
        }


        protected void lnkNewBatches_Click(object sender, EventArgs e)
        { 
            User1 = ((LinkButton)sender).CommandArgument;
            ViewState["User1"] = User1;
            lnkNewBatches();
           
        }
        protected void lnkRunningbatches_Click(object sender, EventArgs e)
        {
            User1 = ((LinkButton)sender).CommandArgument;
            ViewState["User1"] = User1;
            lnkRunningbatches();
        }
        protected void lnkCompletedBatches_Click(object sender, EventArgs e)
        {
            User1 = ((LinkButton)sender).CommandArgument;
            ViewState["User1"] = User1;
            lnkCompletedBatches();
           
        }

kav@94

есть еще одна небольшая проблема мы получаем пейджинг и можем перемещаться но когда мы перемещаемся это означает что каждый раз когда мы нажимаем на пейджинг вторая сетка исчезает

Karthik_Mahalingam

Проверьте свойство visible. Возможно, он где-то установил значение false

kav@94

опять же в lnkCompletedBatches() usrer становится пустым

Karthik_Mahalingam

в противном случае попробуйте использовать сеанс.

kav@94

нет, он все еще не работает, почему, потому что мне нужно передать lnkCompleted1_Click(object sender, EventArgs e) в событии изменения индекса моей страницы

Karthik_Mahalingam

не имеет смысла пропускать это мероприятие. используйте какую-нибудь функцию с session или viewstate для преодоления этой проблемы.

Karthik_Mahalingam

пробовать

 protected void lnkCompletedBatches_Click(object sender, EventArgs e)
        {
            string  User1 = ((LinkButton)sender).CommandArgument;
            ViewState["User1"] = User1;
            MyFunction();
        }