Zbigniew Augustyniak

Zbigniew Augustyniak Starszy specjalista
ds. IT

Temat: ListView

Witam,

mam pewien problem z ListView.

Mianowicie wypełniłem ListView danymi z bazy. DataSource ustawiłem wykorzystując kontrolkę SqlDataSource. Dzięki temu nie mam obecnie żadnego kodu C# czy VB.

Pobrane dane z bazy można edytować, usuwać itp. Mozna również dodawać nowe rekordy do bazy.

I tutaj mam problem, ponieważ dwa textboxy muszą wstawioną wartość domyślną, tak aby osoba dodawająca nowy rekord miała te pola wypełnione i najlepiej nie mogła tych wartości zmienić. Niestety nigdzie nie mogę znaleźć opcji która by to umożliwiała. Próbowałem również to ustawić z poziomu kodu C# ale również mi się to nie udało. Wartość, która ma być wstawiona do textboxa musi zostać pobrana z Label.

Z góry dzięki za wszelkie podpowiedzi.
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: ListView

Zainteresuj się Template, a w szczególności EditItemTemplate - sam decydujesz co i jak ma wyglądać i co ma być wpisane w textbox-ach.
EditItemTemplate
Zbigniew Augustyniak

Zbigniew Augustyniak Starszy specjalista
ds. IT

Temat: ListView

EditItemTemplate jest ustawione i działo dobrze. To co ja chcę mieć ustawia się w InsertItemTemplate.

<InsertItemTemplate>
<tr>
<td>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("id_wskaznika") %>' />
</td>
</tr>

Z tego co udało mi się wyczytać należy wstawić "coś":) w <%# %> żeby to zadziałało. Niestety InsertItemTemplate nie udaje mi się wpisać wartości, która została wcześniej pobrana do ListView.

konto usunięte

Temat: ListView

Napisales wczesniej ze wartosc pobiera z Labela wiec przypisz bezposrednio wartosc:

<asp:TextBox ID="TextBox1" runat="server"
Text='<%= Label1.Text %>' />
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: ListView

Dokładnie jak pisze kolega ustaw to w taki sposób.
Wtedy jednak nie będziesz miał zbindowanej własności do kolumny bazy danych, wtedy możesz zawsze wykorzystać event ItemInserting - o ile oczywiście chcesz je zapisywać. Wnioskuje to z użycia Bind.
Zbigniew Augustyniak

Zbigniew Augustyniak Starszy specjalista
ds. IT

Temat: ListView

Gdyby to było takie proste:))

Niestety tak próbowałem od razu, bo wydaje się to być logiczne ale w tym przypadku nie działa:(

Wartość ma zostać pobrana z label. Problem jednak w tym, że ten lebel (jak i Textbox) generowany jest przez ListView i nie można się do niego odwołać bezpośrednio.

Z tego co udało mi się jeszcze znaleźć, to podobno żeby odwołać się do kontrolki (Label, TextBox itp.) znajdującej się w ListView trzeba zrobić coś podobnego do tego:

protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
{
TextBox tb = (TextBox)ListView1.InsertItem.FindControl("TextBox1");
tb.Text = "any text"
}

I potem w ListView dodać onItemInserting="cosTam".

Niestety za chiny nie mogę jednak tego przełożyć na to czego ja potrzebuję:(Zbigniew Augustyniak edytował(a) ten post dnia 21.10.10 o godzinie 11:36

konto usunięte

Temat: ListView

wiec może spróbuj z ItemCreated w listView:

if (e.Item.ItemType == ListViewItemType.InsertItem)
{
ListViewItem currentItem = e.Item as ListViewItem;
TextBox textBox1 = (TextBox)currentItem.FindControl("textBox1");
if (textBox1 != null)
{
textBox1.Text = "cos";
}
}
Zbigniew Augustyniak

Zbigniew Augustyniak Starszy specjalista
ds. IT

Temat: ListView

Należało to zrobić w poniższy sposób:)

protected void txtBox1_Init(object sender, EventArgs e)
{
if (DropDownList1.SelectedIndex > -1)
{
Session["test"] = DropDownList1.SelectedValue.ToString();
}
else
{
Session["test"] = DropDownList1.Items[0].ToString();
}
((TextBox)ListView1.InsertItem.FindControl("TextBox1")).Text = (string)Session["test"];

}Zbigniew Augustyniak edytował(a) ten post dnia 25.10.10 o godzinie 09:35

konto usunięte

Temat: ListView

a nie wystarczyłoby ustawić właściwości Enable=false dla TextBox?
Zbigniew Augustyniak

Zbigniew Augustyniak Starszy specjalista
ds. IT

Temat: ListView

A co by to według Ciebie dało? Bo nie rozumiem...

Ja nie chciałem zablokować możliwości wpisywania, tylko wpisać tam wartość, która później zostanie wpisana do bazy, gdy użytkownik uzupełni pozostałe wymagane pola.

Akurat to pole nie byłby wstanie sam wypełnić, więc trzeba był to w jakiś sposób wyciągnąć.

Następna dyskusja:

wczytanie danych z txt od l...




Wyślij zaproszenie do