Как я могу загрузить тот же ASP Grid View с другими условиями?
У меня есть DDL и ASP .NET Grid на моей странице aspx. У меня есть два метода getALLProgram и имя getProgramBy, оба работают нормально. Моя проблема: когда страница загружается в первый раз, я хочу вызвать метод 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 ответа
Вы должны проверить в своем 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.
Просто измени эти 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();
}
Как насчет записи getProgramByname для выбранного индекса, измененного события выпадающего списка и getALLProgram для события загрузки страницы?
Надеюсь, мне было ясно, чем помогли ваши сомнения и вышеупомянутое предложение.