Как я могу загрузить тот же ASP Grid View с другими условиями? - PullRequest
0 голосов
/ 11 июля 2011

У меня на странице aspx вид DDL и сетка ASP .net.У меня есть два метода getALLProgram и getProgramBy name, оба работают нормально.Моя проблема: когда страница загружается в первый раз, я хочу вызвать метод getAllprogram, после этого, если пользователь выбирает программу из DDL, я хочу, чтобы мой метод getprogramByname вызывался.

Как здесь мой код:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindProgramDDL();
            BindGrid();
        }
        //BindProgramDDL();
    }

    protected void BindGrid()
    {
        string strProgramCode = DDLProgram.SelectedIndex.ToString();
        List<FormGridEntity> gridEntities = new List<FormGridEntity>();

        GridForResult.DataSource = gridEntities;
        GridForResult.DataBind();

        //throw new NotImplementedException();
    }

    protected void BindProgramDDL()
    {
        List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms();

        DDLProgram.DataSource = programEntities;
        DDLProgram.DataTextField = "Shortname";
        DDLProgram.DataValueField = "Id";
        DDLProgram.DataBind();
        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }

    protected void OnDDLProgramChanged(object sender, EventArgs e)
    {
        List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms();
        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }

Код неполный.Я все еще работаю над этим.Но я не понимаю логику, Как я сделаю это, что я сказал вам здесь.Надеюсь, я четко сформулировал свой вопрос, если он сбивает с толку, пожалуйста, дайте мне знать, что еще я должен предоставить здесь.

Ответы [ 3 ]

1 голос
/ 11 июля 2011

Вы должны проверить в BindGrid, выбрана ли какая-либо программа или нет, и направить вызов в соответствии с этим. Например,

protected void BindGrid()
{
   ...
   if (DDLProgram.SelectedIndex >= 0)
   {
      // program selected
      var programCode = DDLProgram.SelectedValue;
      data = GetProgramByName(programCode);
   }
   else
   {
      // get all programs
      data = GetAllPrograms();
   }

   // bind data with grid
}

Вы можете либо безоговорочно вызвать BindGrid в page_load (то есть в сценариях после возврата), либо вызвать его при изменении DDL.

0 голосов
/ 11 июля 2011

Просто измени эти 2 вещи

    protected void BindGrid()
    {
        List<FormGridEntity> gridEntities = (DDLProgram.SelectedIndex==-1)
          ?FormSaleSubmit_BAO.GetAllPrograms()
          :FormSaleSubmit_BAO.GetProgramByName(DDLProgram.SelectedValue);

        GridForResult.DataSource = gridEntities;
        GridForResult.DataBind();
    }

    protected void OnDDLProgramChanged(object sender, EventArgs e)
    {
        BindGrid();
    }
0 голосов
/ 11 июля 2011

как насчет записи getProgramByname для выбранного индекса, измененного события выпадающего списка и getALLProgram для события загрузки страницы?

Надеюсь, мне было ясно, чем помогли ваши сомнения и вышеупомянутое предложение.

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