PDA

View Full Version : سوال: هم اندازه کردن ارتفاع دو div که ارتفاع داینامیک دارند



mahsa.n
یک شنبه 22 خرداد 1390, 17:40 عصر
سلام

من دو تا div دارم ، یکی float:right و اون یکی float:left

درون div سمت چپ یه treeview قرار داره که وقتی نودهاش رو باز و بسته میکنم ارتفاع div تغییر میکنه

دورن div سمت راست هم چند تا gridview قرار دارن که بر اساس نودی که از treeview انتخاب میشه اطلاعات از بانک خونده میشه و درون gridview قرار میگیره

گاهی اوقات ارتفاع div سمت راست از سمت چپ بیشتر میشه و برعکس

من میخوام که همیشه ارتفاع دو تا div هم اندازه و بر اساس ارتفاع div بلندتر باشه

خیلی هم search کردم ولی چیزی که به درد بخوره پیدا نکردم لطفا راهنمایی کنید

Javad.Kashi
یک شنبه 22 خرداد 1390, 20:07 عصر
سلام
این function را در زمان لود صفحه، فراخوانی کنید.

function SetEqualHeight() {
var leftHeight = document.getElementById('left').offsetHeight;
var rightHeight = document.getElementById('right').offsetHeight;
if (leftHeight > rightHeight) {
document.getElementById('right').style.height = document.getElementById('left').offsetHeight;
}
else {
document.getElementById('left').style.height = document.getElementById('right').offsetHeight;
}
}


یا علی

mahsa.n
دوشنبه 23 خرداد 1390, 09:02 صبح
خوب این فقط در زمان لود کار میکنه همیشه که کار نمیکنه

من gridview رو تو updatepanel گذاشتم یعنی تابع page-load فقط یکبار اجرا میشه

mahsa.n
دوشنبه 23 خرداد 1390, 09:52 صبح
گریدویو به sqldatasource متصله ، چه کدی بنویسم که بعد از اجرای query تابع جاوااسکریپت بالا اجرا بشه؟


<asp:DataList ID="dlSamples" runat="server" GridLines="Both"
DataSourceID="SamplesSqlDataSource" RepeatColumns="3" CellSpacing="5" ForeColor="White"
RepeatDirection="Horizontal">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("Directory")%>' Target="_blank">
<asp:Image ID="ImageButton1" runat=server ImageUrl='<%#Eval("Directory")%>' Height="100px" Width="215px" />
</asp:HyperLink>
<br />
ID:<asp:Label ID="PartNumLabel" runat="server" Text='<%# Eval("PartNum") %>' />
<SelectedItemStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
</ItemTemplate>
</asp:DataList>

<asp:SqlDataSource ID="SamplesSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ExternalParts %>"
SelectCommand="SELECT Pictures.PartNum, Pictures.Directory FROM Parts INNER JOIN Pictures ON Parts.PartNum = Pictures.PartNum WHERE (Parts.PartNameFa = @p) AND (Pictures.Directory LIkE '%/EX%')">
<SelectParameters>
<asp:ControlParameter ControlID="tr" Name="p" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>

tr نام treedview است.

Javad.Kashi
دوشنبه 23 خرداد 1390, 15:22 عصر
این کار به راحتی قابل مدیریته . شما فقط از کلاس ScriptManager در داخلUpdatePanel (در یکی از event handler ها) استفاده کرده و کد javascript مربوطه را فراخوانی می کنید.مثال:


protected void btnUpdatePanel_Click(object sender, EventArgs e)
{
string scripttext = @"var leftHeight = document.getElementById('left').offsetHeight;
var rightHeight = document.getElementById('right').offsetHeight;
if (leftHeight > rightHeight) {
document.getElementById('right').style.height = document.getElementById('left').offsetHeight;
}
else {
document.getElementById('left').style.height = document.getElementById('right').offsetHeight;
}";

ScriptManager.RegisterClientScriptBlock(this, GetType(), "SetEqualHeights", scripttext, true);
}


یا علی

Slytherin
دوشنبه 23 خرداد 1390, 19:38 عصر
دوست عزیز فکر می کنم اگر height هر دو تا DIV را 100% قرار دهید و سپس هر دو DIV را درون یک DIV دیگر با ارتفاع دلخواه قرار دهید مشکلاتان حل شود...

Javad.Kashi
دوشنبه 23 خرداد 1390, 19:44 عصر
دوست عزیز فکر می کنم اگر height هر دو تا DIV را 100% قرار دهید و سپس هر دو DIV را درون یک DIV دیگر با ارتفاع دلخواه قرار دهید مشکلاتان حل شود...

فرمایش شما به ذهن بنده هم رسید ولی اگر این دو Div از هم جدا باشند، کار مشکل می شود.

Slytherin
دوشنبه 23 خرداد 1390, 20:29 عصر
فرمایش شما به ذهن بنده هم رسید ولی اگر این دو Div از هم جدا باشند، کار مشکل می شود.

بله درست می فرمایید اگر Div ها جدا باشند ممکن است مشکل پیش بیاید. البته شاید دوستمون Div هایش جدا نباشند...