هل تستخدم الFormView في تطبيقاتك ؟
هل لاحظت عند ربط الFormView بالDataSource ان الفيجوال ستيديو يقوم بانشاء عناصر تحكم لكل حقل من حقول قاعدة البيانات ؟
هل خاب املك عندما لاحظت ان العناصر غير منسقة داخل جدول ؟
اجابتي عن الاسئلة السابقة كلها بنعم ,لذلك صممت صفحة تقوم بعمل التنسيق الالي باستخدام الجداول بدل ان اقوم بعمل ذلك يدويا.
تصميم الصفحة formatfv.aspx:
<body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><br /> <asp:TextBox ID="TextBox1" runat="server" Height="344px" TextMode="MultiLine" Width="739px"></asp:TextBox> </div> </form> </body>
ويجب وجود الخاصية ValidateRequest="false" في اعلى الصفحة:
<%@ Page ValidateRequest="false"
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string code = TextBox1.Text;
code = code.Replace("</asp:Label>"+Environment.NewLine+"<br />", "</asp:Label></td><td>");
code = code.Replace(":"+Environment.NewLine, ":</td><td>");
code = code.Replace("><br />" + Environment.NewLine, "></td></tr><tr><td>");
code = "<table><tr><td>" + code + "</td></tr></table>";
TextBox1.Text = code;
}شغل الصفحة fvformat.aspx
الان لو كان لديك الFormView التالي:
<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID" DataSourceID="SessionSDS">
<EditItemTemplate>
ID:
<asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
TITLE:
<asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE") %>'>
</asp:TextBox><br />
START_DATE:
<asp:TextBox ID="START_DATETextBox" runat="server" Text='<%# Bind("START_DATE") %>'>
</asp:TextBox><br />
END_DATE:
<asp:TextBox ID="END_DATETextBox" runat="server" Text='<%# Bind("END_DATE") %>'>
</asp:TextBox><br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
Text="Update">
</asp:LinkButton>
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Cancel">
</asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
ID:
<asp:TextBox ID="IDTextBox" runat="server" Text='<%# Bind("ID") %>'>
</asp:TextBox><br />
TITLE:
<asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE") %>'>
</asp:TextBox><br />
START_DATE:
<asp:TextBox ID="START_DATETextBox" runat="server" Text='<%# Bind("START_DATE") %>'>
</asp:TextBox><br />
END_DATE:
<asp:TextBox ID="END_DATETextBox" runat="server" Text='<%# Bind("END_DATE") %>'>
</asp:TextBox><br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
Text="Insert">
</asp:LinkButton>
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Cancel">
</asp:LinkButton>
</InsertItemTemplate>
<ItemTemplate>
ID:
<asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
TITLE:
<asp:Label ID="TITLELabel" runat="server" Text='<%# Bind("TITLE") %>'></asp:Label><br />
START_DATE:
<asp:Label ID="START_DATELabel" runat="server" Text='<%# Bind("START_DATE") %>'>
</asp:Label><br />
END_DATE:
<asp:Label ID="END_DATELabel" runat="server" Text='<%# Bind("END_DATE") %>'></asp:Label><br />
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
Text="Edit">
</asp:LinkButton>
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete">
</asp:LinkButton>
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New"
Text="New">
</asp:LinkButton>
</ItemTemplate>
</asp:FormView>فلو اردت تنسيق فورم الاضافة باستخدام الجداول مثلا,تقوم بنسخ الكود الموجود بين InsertItemTemplate و تضعه داخل حقل النص في fvview.aspx و تنقر الزر .سيظهر الكود منسقا باستخدام الجداول,انسخ الكود و الصقه ثانية في صفحتك داخل InsertItemTemplate .نفس الشيء لكود التحديث و الاظهار EditItemTemplate ,ItemTemplate
طبعا الطريقة مفيدة جدا لو كان لديك formview يحتوي على 10 حقول او اكثر.
