Repeater uvnitř GridView   otázka

ASP.NET WebForms

Pro editaci konkrétní položky v GridView používám v EditItemTemplate Repeater, který volá metodu Fill(). Této metodě bych potřeboval předat id hodnotu, kterou nastavuji při načítání dat konkrétnímu řádku v GridView. Poraďte, prosím, jak id řádku použít jako parametr pro ObjectDataSource.

Děkuji

<asp:GridView>
  <Columns>  
    <asp:TemplateField >                 
      <EditItemTemplate>
        'Id řádku je <%# Eval("Id") %>
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="CategoryDataSource" >
          <ItemTemplate> ... </ItemTemplate>                        
        </asp:Repeater> 
      </EditItemTemplate>                
    </asp:TemplateField>

...

<asp:ObjectDataSource ID="CategoryDataSource" runat="server" 
    OldValuesParameterFormatString="original_{0}" SelectMethod="Fill" 
    TypeName="WWW_JKS.DataAdmin">
    <SelectParameters>
        <asp:Parameter DefaultValue="-1" Name="Id" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč nepoužijete controlParameter v rámci ObjectDataSourcu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkoušel jsem si přidat před Repeater skrytý Label, který držel id řádku, ale ObjectDataSource vracel chybu, že Label nevidí.

"Could not find control 'lblIdHolder' in ControlParameter 'Id'"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Netuším kde,ale někde musíte mít chybu nebo jinou botu.Osobně jsem to zkoušel a vše mi funguje...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak jste nastavil ten Label a jak celý ObjectDataSourcer s ControlParameter?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

U Labelu jsem vynechal vlastnost runat, takže chyba byla na mé straně.

Vše už tedy funguje správně, jen jsem si všimnul, že se metoda plnění volá dvakrát za sebou.

Tady je kód tlačítka, který přepíná editační template v GridView:

<asp:TemplateField HeaderText="Upravit"> 
  <ItemTemplate> 
    <asp:LinkButton ID="lbtnUpdate" runat="server" CommandName="Edit" Text="Upravit" CausesValidation="false" /> 
  </ItemTemplate> 
</asp:TemplateField>  

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A volá se pokaždé s parametrem nebo jednou bez parametrů? Spusťte si debug a odkrokujte si to. Nicméně nasměrovaný jste,takže by to už nemělo být nic složitého

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Metoda se právě volá se stejným parametrem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, myslel jsem stejnou hodnotu parametru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback