Custom Web Part with CheckBoxList values lost on PostBack.
Hi all,
I am trying to pass filter values from a custom webpart to a consumer web part. The
passed vlaues are listed in a CheckBoxList. The databinding occurs in the
GetValues method.
I have 2 issues:
a) When i select the
values from the consumer web part(checkboxlist) and hit apply(i have
added a imagebutton with autopostback attribute set to true) the
checked values appear in a comma seperated string within a textbox but
the values are lost after postback.
b) If I take the databind
from getvalues and put it in Page_LoadComplete with
if(!this.Page.IsPostBack) then, the values dont even appear in the
checkboxlist.
How do i resolve this issue?
I'm pretty
stumped. I've been staring at this thing for over 2 days now. Please
find attached the code i'm working with. There is a javacript handler
attached to the checkboxlist that correctly identifies the values
selected. I guess it gets messed up on PostBack event.
[ConnectionConsumer("Input Values")]
public void GetValues(ITransformableFilterValues values)
{
foreach (string val in values.ParameterValues)
{
//this.Provider_Values += this.Provider_Values != " " ?","+ "'" + val +"'" : "'" + val + "'" ;
this.Provider_Values = val;
this.Provider_Name = values.ParameterName;
ds = new SqlDataSource();
ds.ID = "Source ID";
ds.ConnectionString = cString;
ds.SelectCommand = this.SQLSelectCommand;//"select distinct " + cName +
" from " + tName + " where " + this.Provider_Name+ " = '" +
this.Provider_Values+ "';";
cBList.DataTextField = cName;
cBList.DataValueField = cName;
cBList.DataSource = ds;
cBList.ID = "List ID";
cBList.Attributes.Add("onclick", "FindSelectedItems(this," + tB.ClientID + ");");
cBList.DataBind();
}
}
public void BuildControls()
{
try
{
cBList = new CheckBoxList();
this.Controls.Add(cBList);
}
//Sql exception cought.
catch (Exception ex)
{
ex1 = ex.Message;
}
}
protected override void CreateChildControls()
{
this.BuildControls();
base.CreateChildControls();
}
protected override void OnInit(EventArgs e)
{
this.Page.LoadComplete += new EventHandler(Page_LoadComplete);
base.OnInit(e);
}
void Page_LoadComplete(object sender, EventArgs e)
{
if (this.Page.IsPostBack &&
!String.IsNullOrEmpty(this.Provider_Name) &&
String.IsNullOrEmpty(this.Provider_Values))
{
ds.SelectCommand = "select distinct " + cName + " from " + tName + "
where " + this.Provider_Name + " = '" + this.Provider_Values + "';";
}
}