Событие CheckChanged вызывается при попытке переключиться на другую вкладку? - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть несколько радиокнопок на некоторых вкладках, когда я нажимаю на одну из них, она генерирует Excel-файл.

<asp:RadioButton ID="rbAantallen1" runat="server" AutoPostBack="True" 
                GroupName="Soort" oncheckedchanged="rbRapport_CheckedChanged" 
                Text="Aantallen" />

Ошибка возникает, когда я хочу перейти на другую вкладку.Он продолжает генерировать Excel-файлы.Что я могу сделать, чтобы прекратить запуск отмеченного события и переключиться в другой мир?

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                MyDataSource.SelectCommand = @"
                    select  melder_account, 
                            aanvraag_titel, 
                            fase_datum_opgelost_oplosser, 
                            Melding_niveau_2,
                            rapporteren, 
                            fase_datum_gestart, 
                            fase_datum_opgelost, 
                            doorlooptijd, 
                            jurentkode
                    from uvw_HD_AANVRAAG_DOORLOOPTIJD_ALGEMEEN
                    where Melding_niveau_1 = 'Brandje'";
            }
        }

    protected void MenuTabs_MenuItemClick(object sender, MenuEventArgs e)
    {
        int index = Int32.Parse(e.Item.Value);
        multiTabs.ActiveViewIndex = index;
        MyDataSource.SelectCommand = BepaalDataSource(index);
    }

    public string BepaalDataSource(int index)
    {
        string select = @"
            select  melder_account, 
                    aanvraag_titel, 
                    fase_datum_opgelost_oplosser, 
                    Melding_niveau_2,
                    rapporteren, 
                    fase_datum_gestart, 
                    fase_datum_opgelost, 
                    doorlooptijd, 
                    jurentkode
            from uvw_HD_AANVRAAG_DOORLOOPTIJD_ALGEMEEN
            where Melding_niveau_1 = '";
        if (index == 0)
        {
            cbPage.Checked = false;
            return select += "Brandje'";
        }
        else
        {
            cbPage.Checked = true;
            return select += "System - Netwerk'";
        }
    }

    public DataView GetDataFromDataSource()
    {
        MyDataSource.SelectCommand = BepaalDataSource(Convert.ToInt16(cbPage.Checked));
        return MyDataSource.Select(DataSourceSelectArguments.Empty) as DataView;
    }

    protected void rbRapport_CheckedChanged(object sender, EventArgs e)
    {
        DataTable dtOriginal = (DataTable)GetDataFromDataSource().ToTable(); //Return Table consisting data
        DataTable dtTemp = new DataTable(); //Create Temporary Table

        //Creating Header Row
        dtTemp.Columns.Add("<b>Melder</b>");
        dtTemp.Columns.Add("<b>Onderwerp</b>");
        dtTemp.Columns.Add("<b>Oplosser</b>");
        dtTemp.Columns.Add("<b>Niveau 2</b>");
        dtTemp.Columns.Add("<b>Rapporteren</b>");
        dtTemp.Columns.Add("<b>Gestart op</b>");
        dtTemp.Columns.Add("<b>Opgelost op</b>");
        dtTemp.Columns.Add("<b>Doorlooptijd</b>");
        dtTemp.Columns.Add("<b>Jurentkode</b>");
        DataRow drAddItem;
        for (int i = 0; i < dtOriginal.Rows.Count; i++)
        {
            drAddItem = dtTemp.NewRow();
            drAddItem[0] = dtOriginal.Rows[i][0].ToString();//Melder
            drAddItem[1] = dtOriginal.Rows[i][1].ToString();//Onderwerp
            drAddItem[2] = dtOriginal.Rows[i][2].ToString();//Oplosser
            drAddItem[3] = dtOriginal.Rows[i][3].ToString();//Niveau 2
            drAddItem[4] = dtOriginal.Rows[i][4].ToString();//Rapporteren
            drAddItem[5] = dtOriginal.Rows[i][5].ToString();//Gestart op
            drAddItem[6] = dtOriginal.Rows[i][6].ToString();//Opgelost op
            drAddItem[7] = dtOriginal.Rows[i][7].ToString();//Doorlooptijd
            drAddItem[8] = dtOriginal.Rows[i][8].ToString();//Jurentkode
            dtTemp.Rows.Add(drAddItem);
        }

        DataGrid dg = new DataGrid(); //Temp Grid
        dg.DataSource = dtTemp;
        dg.DataBind();

        ExportToExcel("Rapport.xls", dg);
        dg = null;
        dg.Dispose();
    }

    private void ExportToExcel(string strFileName, DataGrid dg)
    {
        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename=" + strFileName);
        Response.ContentType = "application/excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        dg.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }

    protected void cbRapport_CheckedChanged(object sender, EventArgs e)
    {
    }

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Несколько вещей приходят на ум.

В вашей функции rbRapport_CheckChanged () вы можете проверить, чтобы переключатель был виден.

Вы также можете проверить вкладку, чтобы убедиться, что вы находитесь на правой вкладке.

РЕДАКТИРОВАТЬ Судя по вашим комментариям, вкладка хостинга невидима.

Если это так, сделайте что-то подобное в своем коде

rbRapport_CheckChanged()
{
    if(tab1.Visible == false)
        return;

    <rest of code here>
}

Где tab1 - вкладка, на которой находится rbRapport.Это проверит, если вкладка не видна, вы, вероятно, не хотите создавать xls, поэтому она просто закоротит и выбросит событие.Если вкладка видима, она обработает событие.

Редактировать возможно, вам не следует создавать xls при смене переключателя.Может быть, у вас должна быть кнопка, чтобы щелкнуть с надписью «Сгенерировать XLS» или что-то еще, и захватить это событие клика.- тайлон 28 апреля в 11:42

0 голосов
/ 28 апреля 2011

Ничего плохого в предоставленном коде.Убедитесь, что вы не связали эту функцию rbRapport_CheckedChanged с каким-либо другим событием элемента управления, таким как TabChangedEvent или CheckedChange, с другим переключателем, значения которого будут меняться в зависимости от изменения вкладки и т. Д.

Если это не так, возможно,быть проблема с родительскими элементами управления RadioButton.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...