Ich kontaktiere Sie, weil ich nicht weiß, wie man Daten von einem UserControl zu einem anderen sendet.ASP - Daten von UserControl zu einem anderen senden
Kontext:
Der erste Usercontrol, UrlControl (uc1) einen Text und ein Linkbutton, die dem Benutzer ermöglichen, eine URL zu einem Ereignis hinzufügen
Die anderen Usercontrol, TileColorControl (in meiner Datenbank.) (uc2) erlaubt dem Benutzer, einige Farben in seinem Event hinzuzufügen. Eine hinzugefügte Farbe kann an alle URLs oder an eine bestimmte URL angehängt werden. In diesem Steuerelement gibt es eine DropDownList, die die andere URL des Ereignisses enthält.
Was ich will ist: Wenn ich eine neue URL durch Klicken auf "Hinzufügen" (in uc1) erstellen, aktualisiert sich die DropDownList (in uc2) automatisch mit den aktualisierten Daten.
Vielen Dank im Voraus für Ihre Hilfe
UrlControl (uc1) -Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillUrls();
}
}
private void FillUrls()
{
RepeaterUrl.DataSource = UrlController.FindByEvent(EventId);
RepeaterUrl.DataBind();
}
protected void LinkButtonSaveNew_Click(object sender, EventArgs e)
{
string txtUrl = TextBoxNewUrl.Text;
if (UrlController.IsValidUrl(txtUrl))
{
DMCAccess.Event evt = EventController.FindByUrl(txtUrl);
if (evt != null)
{
btnMsgFailed.Visible = false;lbInfo.Visible = false;
showMsgAlreadyUsed(evt);
}
if (!UrlController.IsAlreadyExist(txtUrl))
{
Guid userGuid = PersonsController.GetPersonByUserGuid((Guid)Membership.GetUser().ProviderUserKey).Guid;
Url url = new Url
{
Guid = Guid.NewGuid(),
UrlLink = TextBoxNewUrl.Text,
IsDeleted = false,
EventGuid = EventId,
CreationByGuid = userGuid,
ModificationByGuid = userGuid,
CreationDate = DateTime.Now,
ModificationDate = DateTime.Now
};
UrlController.Create(url);
msgSuccess("http://" + url.UrlLink + " was created");
FillUrls();
}
}
else
{
HyperLinkViewEvent.Visible = false;
msgFailed("Please, enter a valid URL.");
}
}
TileColorControl (UC2) -Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillColors();
FillUrls();
}
}
protected void RepeaterColor_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddlUrls = (DropDownList)e.Item.FindControl("ddlUrls");
ddlUrls.DataSource = urls();
ddlUrls.DataTextField = "Value";
ddlUrls.DataValueField = "Key";
ddlUrls.DataBind();
ddlUrls.Items.Insert(0, new ListItem("Default", Guid.Empty.ToString()));
Guid? urlGuid = ((DMCAccess.TileColor)e.Item.DataItem).UrlGuid;
if (urlGuid.HasValue)
{
ddlUrls.SelectedIndex = ddlUrls.Items.IndexOf(ddlUrls.Items.FindByValue(urlGuid.Value.ToString()));
}
}
}
public void FillUrls()
{
DropDownListBoxUrl.DataSource = urls();
DropDownListBoxUrl.DataTextField = "Value";
DropDownListBoxUrl.DataValueField = "Key";
DropDownListBoxUrl.DataBind();
DropDownListBoxUrl.Items.Insert(0, new ListItem("Default", Guid.Empty.ToString()));
}
private Dictionary<Guid, string> urls()
{
Dictionary<Guid, string> dUrls = new Dictionary<Guid, string>();
foreach (Url u in UrlController.FindByEvent(EventId))
{
dUrls.Add(u.Guid, u.UrlLink);
}
return dUrls;
}
private void FillColors()
{
TextBoxNewIdColor.Text = TileColorController.MaxColorIdByEvent(EventId).ToString();
if (UrlController.FindByEvent(EventId).Count < 1)
{
upNoWebsite.Visible = true;
upColor.Visible = false;
}
RepeaterColor.DataSource = TileColorController.FindByEvent(EventId);
RepeaterColor.DataBind();
}