Я пытаюсь создать пользовательский интерфейс, в котором после загрузки изображения страница должна выполнить перезагрузку / обратную передачу без TabContainer (ajaxcontroltoolkit), изменяющего свой ActiveTabIndex, но обратная передача по умолчанию кнопки (asp: button) заставляет меняПроблемы, когда я пытаюсь перераспределить страницу через браузер вручную, он пытается повторно выполнить последний метод, использованный кнопкой, если я не использую следующий код (для перезагрузки страницы):
Administrar.aspx.cs:
ScriptManager.RegisterStartupScript(this, this.GetType(), "key", "ShowMessage()", true);
Функция, связанная с JavaScript:
function ShowMessage()
{
alert('Exito al cargar imagen.');
window.location.href = 'Administrar.aspx';
}
НО !, если я использую этот код при перезагрузке страницыя теряю ActiveTabIndex.Все, что я хочу сделать, это сохранить ActiveTabIndex при загрузке изображения в базу данных без проблем с ручной перезагрузкой браузера. Скажите, пожалуйста, что я делаю неправильно или что я могу сделать?я застрял на этом в течение нескольких дней.
вот код для лучшего понимания:
FrontEnd:
<asp:TabContainer ID="TabContainer1" CssClass="cssTab" runat="server">
<asp:TabPanel runat="server" ID="TabPanel1" HeaderText="INFORMACIÓN">
<ContentTemplate>
<div class="divCNTRL1">...</div>
<div class="divDSPLY1">...</div>
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel runat="server" ID="TabPanel2" HeaderText="IMÁGENES">
<ContentTemplate>
<div class="divCNTRL2">
<h3>Agregar Imagenes</h3>
<label class="lbl">Relación:</label>
<asp:DropDownList CssClass="elementControl2" DataValueField="idInformacion" DataTextField="RelGal" ID="ddlRelacionGaleria" runat="server"></asp:DropDownList>
<label class="lbl">Imagen:
<asp:RequiredFieldValidator ValidationGroup="grpImg" ID="RequiredFieldValidator12" runat="server" ErrorMessage="*Imagen Invalida." ControlToValidate="FilUplIMG" ForeColor="#CC3300"></asp:RequiredFieldValidator>
</label>
<asp:FileUpload ID="FilUplIMG" runat="server" CssClass="elementControl2" />
<br />
<asp:Button runat="server" ID="btnAgrImg" OnClick="btnAgrImg_Click" CssClass="btnAgregarPropiedad" Text="AGREGAR" />
</div>
<div class="divDSPLY2">
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView runat="server" ID="gvImg" CssClass="gvImg2">...</asp:GridView>
<asp:Label ID="lblPage2" CssClass="lblPage" runat="server" ForeColor="Blue"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
BackEnd(Просто кнопка для добавления):
public void btnAgrImg_Click(object sender, EventArgs e)
{
if (FilUplIMG.PostedFile != null)
{
string FileName = Path.GetFileName(FilUplIMG.PostedFile.FileName);
MySqlConnection con = new MySqlConnection(strConnString);
string strQuery = "insert into inmobiliarialrz.galeria (fkrelation, Relation, FileName, FilePath) values (@fkrelation, @Relation, @FileName, @FilePath)";
MySqlCommand cmd = new MySqlCommand(strQuery);
if (File.Exists(Server.MapPath("~/ImagenesPROP/") + FileName))
{
string script = "alert(\"Ya existe esta imagen.\");";
ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
}
else
{
//save files in the disk
FilUplIMG.SaveAs(Server.MapPath("~/ImagenesPROP/" + FileName));
cmd.Connection = con;
cmd.Parameters.AddWithValue("@fkrelation", ddlRelacionGaleria.SelectedValue);
cmd.Parameters.AddWithValue("@Relation", ddlRelacionGaleria.SelectedItem.Text);
cmd.Parameters.AddWithValue("@FileName", FileName);
cmd.Parameters.AddWithValue("@FilePath", "~/ImagenesPROP/" + FileName);
cmd.CommandType = CommandType.Text;
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
lblFail.Visible = true;
lblFail.Text = ex.Message;
}
finally
{
con.Close();
con.Dispose();
}
this.MostrarImagen2();//this is a method to show data in a gridview.
lblFail.Text = "";
ScriptManager.RegisterStartupScript(this, this.GetType(), "key", "ShowMessage()", true);
TabContainer1.ActiveTabIndex = 1;//here i'm trying a desperate move.
}
}
}