PDA

View Full Version : مشکلی در طراحی واسط کاربری برای دریافت اطلاعات



.مهدی فهمیده غلامی.
دوشنبه 04 اردیبهشت 1385, 15:48 عصر
در سیستم کتابخانه ای روش کار میکنم وب فرمی وجود داره که قراره
اطلاعات کتاب رو در اون ثبت کرد.
یکی از مشخصات کتاب نویسنده است. با توجه به اینکه تعداد نویسنده ها
متغیر است و نمیشه از تعداد ثابتی کنترل برای این کار استفاده کرد
برای ثبت این اطلاعات چه باید کرد.
در ضمن از وب فرم باید استفاده بشه.

nazaninam
دوشنبه 04 اردیبهشت 1385, 16:24 عصر
میتونید از یک تیبل جداگونه استفاده کنید که رابطه یک به چند با کتاب داره
یعنی هر کتاب میتونه چند نویسنده داشته باشه....
برای ثبتش هم میتونید یه بخش بگذاریید که مشخصات کتاب وارد میشه بعد یک باتن بگذارید که یک صفحه برای وارد کردن نویسنده باز میکنه و کد کتاب به اون صفحه پاس میشه و الی آخر...

Behrouz_Rad
دوشنبه 04 اردیبهشت 1385, 18:11 عصر
برای ایجاد عناصر پویا باید از جاوا اسکریپت استفاده کنی!
W3C، متد createElement شی DOM رو به همین منظور عرضه کرده. (سازگار با تمامی مرورگرها!)
تابع نمونه ای بدین منظور در ذیل نوشتم:


<script language="javascript">
function createDynamicContents()
{
var elem = document.createElement("input");
elem.setAttribute("type", "text");
elem.setAttribute("name", "myInput");
document.body.appendChild(elem);
}
</script>

برای تنظیم مکان هر input از خاصیت STYLE و تعیین LEFT و TOP استفاده کن.
برای دسترسی به هر input هم، (از اونجایی که عناصر به صورت پویا ایجاد میشن و نمی تونی خاصیت runat رو برابر با server قرار بدی)، باید از ترفندی قدیمی استفاده کنی!
ASP کاران کلاسیک به خوبی با متد Form کلاس Request آشنا هستند...
تمامی مقادیر فرمی که به سرور پاس داده می شود، توسط این متد قابل بازیابی هستند.
از آنجا که نام تمامی input های ایجاد شده، myInput است، این مقادیر با کاراکتر "," از هم جدا و برگشت داده می شوند.


Dim s As String = Request.Form("myInput")
If Not s Is Nothing Then
Dim arrValues() As String
If s.LastIndexOf(",") > 0 Then
arrValues = s.Split(Convert.ToChar(","))
ElseIf s.Length > 0 Then
ReDim arrValues(0)
arrValues(0) = s
End If
End If

در تکه کد فوق، یک متغیر رشته ای ایجاد کردم و مقادیر برگشتی کنترل های myInput رو در اون قرار دادم.
یک آرایه ی رشته ای تعریف شده و در صورتی که تعداد Input های ایجاد شده بیش از 2 عدد بود، مقادیر برگشتی بر حسب کاراکتر "," از هم جدا و در آرایه قرار می گیرند.
بدین ترتیب هر خانه ی آرایه دارای یکی از مقادیر Input ها خواهد بود.
و در صورتی که تنها یک Input ایجاد شده بود، با تغییر خانه های آرایه به یک خانه با استفاده از تابع ReDim، مقدار تنها Input برگشتی در تنها خانه ی آرایه قرار خواهد گرفت.

موفق باشید.