Я знаю, что, должно быть, мне не хватает чего-то простого, но я не могу найти его, поэтому поставил бы здесь вопрос. У меня есть formview с двумя шаблонами (item и edititem).Почему в режиме редактирования исчезло вид формы
Форма привязана к элементу itemmemplate в событии page_Load
и отлично работает. Однако, если используется код !IsPostBack
в коде-обратном, форма вид исчезает при нажатии кнопки редактирования. Если я удалю проверку обратной связи с page_load
, после нажатия кнопки редактирования появится вид формы.
У страницы есть режим просмотра.
В целом, какие шаги необходимы для правильного перехода формы к режимам между режимами?
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
source = Session["Source"].ToString();
acctType = Session["AccountType"].ToString();
acctNumber = Convert.ToInt32(Session["AccountNumber"]);
if (source == "LifeLineDS")
{
ObjectDataSource fvObjDS = new ObjectDataSource();
fvObjDS.TypeName = "LifelineDataAccess.LifelineSubscriber";
fvObjDS.SelectMethod = "GetLifelineDSSubscriber";
fvObjDS.SelectParameters.Add(new Parameter("AcctType", TypeCode.String, acctType));
fvObjDS.SelectParameters.Add(new Parameter("AcctNumber", TypeCode.String, Session["AccountNumber"].ToString()));
fvObjDS.DataBind();
if (fvObjDS != null)
{
fvSubscriber.DataSource = fvObjDS; //subscriber.ToString();
fvSubscriber.DataBind();
initialProgramValue = (fvSubscriber.FindControl("txtEligibility") as TextBox).Text;
}
}
// more code for other sources...
}
protected void btnEdit_Click(object sender, EventArgs e)
{
fvSubscriber.ChangeMode(FormViewMode.Edit);
fvSubscriber.DataSource = Session["subscriber"]; //Adding this line resolved !IsPostBack problem
fvSubscriber.DataBind();
ObjectDataSource programsObjDS = new ObjectDataSource();
programsObjDS.TypeName = "LifelineDataAccess.LifelineSubscriber";
programsObjDS.SelectMethod = "GetPrograms";
DropDownList ddlEligibility = ((DropDownList)(fvSubscriber.FindControl("ddlEligibility")));
if (ddlEligibility != null)
{
ddlEligibility.DataSource = programsObjDS;
ddlEligibility.DataTextField = "ProgramName";
ddlEligibility.DataValueField = "ProgramName";
ddlEligibility.SelectedValue = initialProgramValue; // Set selected value to subscribers current program
ddlEligibility.DataBind();
}
}
Zychia благодарит вас за отзыв. Я обнаружил, что я не хотел добавлять источник данных, поэтому добавляю строку в свой код, см. Выше. Что касается добавления идентификатора источника данных в декларативную часть моего кода, я не делал этого для загрузки страницы, потому что я использую другой источник в зависимости от определенных условий, как вы можете видеть в инструкции if (source == LifeLineDS) , Есть ли лучший способ справиться с такой ситуацией? – Jason
извинения за испортить ваше имя в моем комментарии выше :) – Jason