Trovare l'ID client dei controlli creati dinamicamente?
Domanda
Come posso trovare l'ID client di un controllo creato dinamicamente?
Nel mio ascx, ho il seguente frammento.
function DoSomething() {
var loneStar= $find("<%= loneStar.ClientID %>");
loneStar.hide();
}
Nel mio codice dietro, ho
public partial class SomeControl: System.Web.UI.UserControl
{
protected Label loneStar = new Label { Text = "Raspeberry", ForeColor = System.Drawing.Color.DarkGray};
private void someOtherMethod()
{
somePanel.Controls.Add(loneStar);
}
}
Il problema è che il ClientID nella pagina sottoposta a rendering risulta vuoto.
Cosa mi manca qui?
Soluzione
È necessario fornire al controllo un ID, altrimenti non verrà generato alcun attributo ID.Apporta una modifica al tuo c # simile a questa:
protected Label loneStar = new Label { ID = "loneStar", Text = "Raspeberry", ForeColor = System.Drawing.Color.DarkGray};
Altri suggerimenti
http://jagregory.com/ scritti / come-usare-clientids-in-javascript-senza-bruttezza /
<script type="text/javascript">
var txtUsernameID = '<%= txtUsername.ClientID %>';
var txtPasswordID = '<%= txtPassword.ClientID %>';
</script>
Forse dovresti controllare se stai aggiungendo dinamicamente il controllo ogni volta con lo stesso ID
Forma semplice:
<asp:Panel runat="server" ID="pnl"></asp:Panel>
<script type="text/javascript">
var txtUsernameID = '<%= myLabel.ClientID %>';
CodeBehind:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AddedControl();
}
protected Label myLabel = new Label();
void AddedControl()
{
myLabel.Text = "Labelll";
this.pnl.Controls.Add(myLabel);
}
}
Output HTML:
<span>Labelll</span>
<script type="text/javascript">
var txtUsernameID = 'ctl02';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow