reference to controls in template item

D

Dariusz Tomon

Hello,

The situation is like follow:

I've got GridView1 correlated with DetailsView1 (it's normal scenario). In
DetailView1 I've got CRUD operations enabled. For create and edit opeartion
I've 2 ItemTemplates. One of them is DropDownList2 (with AutoPostBack
enabled) and 2-nd one is GridView2 (dependent on DropDownList2). All I want
is to have GridView2 updated when I change option in DropDownList2.
I thought that I can do that in code behind (Selected event of
DropDownList2) by changing SqlDataSource which is bound to GridView2. But I
don't know how to refer to these "embedded" controls.

Best Regards

D.T.
 
G

Guest

Czesc Darek,

What about FindControl() method?:

DropDownList dropDownList = (DropDownList)
DetailView1.FindControl("DropDownList1")
string selectedValue = dropDownListSelectedValue;

or use asp:ControlParameter in sqldatasource control. The only problem with
the second approach (in this case) is you have to provide container(s)
control id as well:

<asp:SqlDataSource runat="server" ID="SqlDataSource1">
<SelectParameters>
<asp:ControlParameter ControlID="DetailsView1$DropDwonList1"
PropertyName="SelectedValue"/>
</SelectParameters>
</asp:SqlDataSource>

Hope this helps
 
D

Dariusz Tomon

Thank you for your advice.
Actually I solved the problem very alike :)

protected void ddl_DeviceType_SelectedIndexChanged(object sender, EventArgs
e)

{

string a = DetailsView1.FindControl("ddl_DeviceType").ID.ToString();

DropDownList ddl = new DropDownList();

ddl = (DropDownList)DetailsView1.FindControl("ddl_DeviceType");

a = ddl.SelectedItem.ToString();

}



Best Regards



D.T.
 
D

Dariusz Tomon

Czesc Milosz,

Zauwazylem adres wp.pl wiec mozna po polsku chociaz lista jest eng (ale jak
sie wczytaja to pewnie zatrybia :)
Ok w kazdym razie taka sprawa:

Mam nested gridview w DetailsView ktora pozwala mi wybrac konkretny rekord.
Ale jak robie sortowanie po kolumnie to wywal mi taki blad:

**********************************************

Databinding methods such as Eval(), XPath(), and Bind() can only be used in
the context of a databound control.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Databinding methods
such as Eval(), XPath(), and Bind() can only be used in the context of a
databound control.

Source Error:


[No relevant source lines]


Source File: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
Files\zasobyit2\2486c2d0\3d86e288\App_Web_wslajwmy.0.cs Line: 0

Stack Trace:


[InvalidOperationException: Databinding methods such as Eval(), XPath(), and
Bind() can only be used in the context of a databound control.]
System.Web.UI.Page.GetDataItem() +1996914
ASP.infohardware_aspx.__DataBinding__control127(Object sender, EventArgs
e) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
Files\zasobyit2\2486c2d0\3d86e288\App_Web_wslajwmy.0.cs:0
System.Web.UI.Control.OnDataBinding(EventArgs e) +99
System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable
data) +51
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments,
DataSourceViewSelectCallback callback) +29
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +149
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +70
System.Web.UI.WebControls.GridView.DataBind() +4
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e) +24
System.Web.UI.Control.PreRenderRecursiveInternal() +77
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Control.PreRenderRecursiveInternal() +161
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1360

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET
Version:2.0.50727.42


******************************************

Dodam ze reprezentacja tego pola w templateitem ale w widoku "normalnym" bez
edycji jest labelka.

Masz moze jakis pomysl jak to obejsc? Idealnie chcialbym uzyskac
wspolzaleznosc pomiedzy 2 osadzonymi gridview tak aby wybranie rekordu z
jedego powodowalo zawezenie wynikow 2-giego. Oczywiscie te 2 kontrolgi sa
embedded.

Pozdrawiam

Darek
 
G

Guest

Czolem Darek,

Musze przyznac ze troche zamieszales pomimo ze dziala :)
1. nie musisz inicjalizowac zmiennej poprzez tworzenie nowej instancji
dropdownlist skoro ona juz istnieje i zostanie zwrocona z metody FindControl()
2. wiekszosc zdazen przekazuje referencje do obiektu ktorego zdazenie
dotyczy z paramnetrze sender (w tym przypadku bedzie to referencja do
3. podobnie jak w pkt.1, nie musisz inicjalizowac stringa ID controlki

Powinno byc mniej wiecej tak:

protected void ddl_DeviceType_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList) sender;
string value = ddl.SelectedValue;
}

albo

protected void ddl_DeviceType_SelectedIndexChanged(object sender, EventArgs e)
{
string a;
DropDownList ddl = (DropDownList)
DetailsView1.FindControl("ddl_DeviceType");
a = ddl.SelectedValue.ToString();
}

Widze ze cos Ci jeszcze tam nie dziala (nastepny post) wiec moze bedzie
szybciej jak podeslesz mi kod na maila.

Uszanowanie
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top