پايان نامه
جهت اخذ درجه کارشناسي
در رشته مهندسي کامپيوتر – نرم افزار

پايان نامه طراحي سيستم ارزيابي مناقصه کنندگان در طرح هاي عمراني (رشته کامپبوتر)

چکيده
هدف از طراحي سيستم ارزيابي مناقصه کنندگان عبارت است از
• تقسيم موارد امتياز دهي تا حداقل ۳ سطح جهت بررسي موشکافانه موارد فني ، توليدکنندگان تجهيزات ، آموزش ، برنامه زمان بندي پيشنهادي و … در مدارک پيشنهاد شده توسط مناقصه کنندگان

• گزارش گيري آسان با فرمول دلخواه که بر اساس سياست تعيين شده توسط کارفرما و مشاور است (در صد وزني موارد تعيين شده در هر سطح)
• داشتن سند معتبر جهت پاسخ به شکايات
• جلوگيري از اعمال سليقه و تقلب در امتياز دهي توسط کارشناس
• يکسان سازي موارد مورد مقايسه در امتياز دهي
• امکان بررسي تک تک مراحل توليد امتياز نهايي
• نگهداري کليه مشخصات ارائه شده از مناقصه کنندگان

بدين جهت در اين مدرک به ترتيب ذيل توضيحاتي آورده شده است:
در فصل اول ارائه تعاريف کلي و فني جهت جلوگيري از به وجود آمدن هر گونه مشکل در توضيح روند کار آورده شده است.
در فصل دوم به توضيح سياست کلي و روند برنامه و چگونگي عمل امتياز دهي شده است
فصل سوم شامل موارد طراحي از جمله ER,DFD0,DFD1 است
فصل چهارم شامل کد ها و توضيحات مربوط به برنامه و گزارشات مي باشد.

فهرست
چکيده ۳
فهرست ۴
پيشگفتار ۶
تعاريف ۷
مقدمه ۸
TENDER 8
مناقصه کننده (BIDDER) 8
PROPOSAL 8
PROPOSAL EVALUATION 8
SELECTION OF MAIN CONTRACTOR 8
CRITERIA 8
VENDOR 8
تحليل برنامه ارزيابي ۹
مقدمه ۱۰
تعريف سيستم ۱۰

اهداف ۱۰
مخاطبين ۱۰
سرويس هاي اصلي ۱۱
امتياز دهي ۱۱
گزارش گيري ۱۱
معماري سايت ۱۲

واسط کاربر ۱۲
پايگاه داده ۱۲
پردازش ها ۱۲
طراحي ۱۳
مقدمه ۱۴
DFD سطح صفر ۱۴

DFD سطح يک ۱۴
پياده سازي ۱۷
دياگرام ۱۸
کد ايجاد STORED PROCEDURE 18
کد ايجاد TRIGGER 20
نقشه سايت ۲۴
فرم هاي واسط کاربر ۲۴
گزارش نهايي ۴۱

پيشگفتار
شرکت ملي فولاد ايران در سال ۱۳۸۶ به منظور ساخت کارخانه احيا مستقيم فولاد با ظرفيت ۸۰۰ هزار تن و واحد انباشت و برداشت با ظرفيت انباشت و برداشت ۱٫۵۰۰٫۰۰۰ تن در سال ، در شرکت فولاد آذربايجان در نزديکي شهر ميانه ، استان آذربايجان غربي ايران ، اقدام به برگزاري مناقصه براي انتخاب پيمانکار شايسته اين پروژه نموده است. بمنظور بررسي و ارزيابي دقيق پيشنهادات شرکت کنندگان در مناقصه و در نهايت انتخاب بهترين پيشنهاد جهت اجراي طرح شرکت مهندسين مشاور پولاد بعنوان مشاور جهت بررسي انتخاب شده است.

شرکت مذکور جهت استفاده از امکانات جديد مکانيزه کردن سيستم قبلي خود و تسريع بخشيدن به امر ارزيابي و هم چنين دستيابي به قابليت پاسخگويي سريع پيشنهاد طراحي و برنامه نويسي “سيستم ارزيابي مدارک مناقصه را طرح کرد که مراحل طراحي و ساخت سيستم که به عنوان پروژه شرکت و سپس به عنوان پروژه کارشناسي اينجانب مطرح شده و در اين مدرک گردآوري شده است.

فصل اول
تعاريف

مقدمه
در سيستم امتيازدهي يک سري اصطلاحات فني به شرح زير موجود است که در ذيل توضيح مختصري جهت هر يک ارائه مي گردد:
Tender
در ابتداي کار شرکت برگزار کننده مناقصه يک مدرک شامل حداقل نياز هاي مربوط به طرح مورد مناقصه را با ذکر يک سري استانداردهاي موجود يا طرح هاي انجام شده قبلي جمع آوري مي کند. اين مدرک هم چنين شامل اطلاعاتي است که از نظر کارشناسان فني شرکت برگزارکننده مناقصه بايد توسط مناقصه کنندگان پر شود.
مناقصه کننده (Bidder)
کنسرسيومي که پس از احراز صلاحيت خود موظف است Tender را خريداري نموده و مطابق مطالب خواسته شده مشخصات طرح را تعريف کند.
Proposal

مدرک ارائه شده توسط مناقصه کننده که شامل معرفي خود ، تجربيات و طرح هاي گذشته و کليه مشخصات پيشنهادي جهت طرح فعلي است.
Proposal Evaluation
عملي که طي آن مدارک ارائه شده بررسي و امتياز دهي مي شود و در نهايت در پاکت فني مربوط به مناقصه مورد نظر به ترتيب امتياز هريک از کنسرسيوم هاي مورد بررسي به مرجع اعلام نتايج ارائه مي گردد.
Selection of Main Contractor

پس از بازشدن پاکت مالي ارائه شده توسط کنسرسيوم ها و پاکت فني ارائه شده توسط برگزار دهنده و امتياز دهنده مناقصه، برنده مناقصه اعلام مي گردد
Criteria
موضوعاتي که مورد ارزيابي قرار مي گيرند و خود به موضوعات ريزتر نيز تقسيم بندي مي شوند و بدين ترتيب سطوح (Level) هاي ارزيابي را مي سازند.
Vendor
اصطلاحا به کارخانه فروشنده و صاحب تکنولوژي تجهيزات کلي طرح گفته مي شود که نقش مهمي در ارزش طرح کلي بازي مي کند.

فصل دوم
تحليل برنامه ارزيابي

مقدمه
در فصل قبل به توضيح چگونگي روند کلي شرکت و برنده شدن در مناقصه پرداخته شد. در اين فصل به توضيح سياست کلي و روند برنامه و چگونگي عمل امتياز دهي شده است.

تعريف سيستم
سيستم ارزيابي به منظور تعيين امتياز شرکت کنندگان در مناقصه و پاسخ گويي به شکايات احتمالي تنظيم و تهيه شده است.
اهداف
• تقسيم موارد امتياز دهي تا حداقل ۳ سطح جهت بررسي موشکافانه موارد فني ، توليدکنندگان تجهيزات ، آموزش ، برنامه زمان بندي پيشنهادي و … در مدارک پيشنهاد شده توسط مناقصه کنندگان

• گزارش گيري آسان با فرمول دلخواه که بر اساس سياست تعيين شده توسط کارفرما و مشاور است (در صد وزني موارد تعيين شده در هر سطح)
• داشتن سند معتبر جهت پاسخ به شکايات

• جلوگيري از اعمال سليقه و تقلب در امتياز دهي توسط کارشناس
• يکسان سازي موارد مورد مقايسه در امتياز دهي
• امکان بررسي تک تک مراحل توليد امتياز نهايي
• نگهداري کليه مشخصات ارائه شده از مناقصه کنندگان
اصول و سياست ها

بمنظور اجراي صحيح ارزيابي فني عمومي پيشنهادات و مقايسه دقيق پيشنهادهاي مربوط به کنسرسيوم هاي شرکت کننده اقدام به تشکيل گروه هاي کاري در بخش هاي مديريت پروژه، پروسس و ماشين آلات، تاسيسات مکانيکي، برق و ابزار دقيق، ساختمان، صنايع و کنترل پروژه، امور قراردادي، ترجمه و تدوين، منشيگري و اداري نمود. مديريت پروژه جهت همسان سازي ارزيابي ها معيارهاي ارزيابي اسناد را ابلاغ کرد که به صورت ده سرفصل در سطح ۱ تعيين و سطوح ۲ و ۳ نيز وارد جداول ارزيابي شدند .

جداول سطح ۴ بر اساس نظرات کارشناسان تهيه و بارم بندي شده و نتايج آن درجداول سطح ۲ و ۳ وارد گرديده و به اين ترتيب ارزيابي صورت پذيرفت
مخاطبين

کارشناسان بررسي کننده مدارک (مشاور)
ناظرين از طرف شرکت کنندگان در مناقصه (پيمانکار آتي)
مرجع ناظر و اعلام کننده امتياز نهايي (کارفرما)
انتظارات کاربر
سرعت دقت و قابليت اطمينان در امتياز دهي و قابليت استناد به مدارک
سرويس هاي اصلي
ورود اطلاعات
۱٫ اطلاعات پايه

• ورود نام مناقصه کنندگان
• ورود Criteria و ارزش وزني مربوطه در سطح مربوطه
• ورود Vendor و امتياز اختصاص داده شده
• ورود نام کشور هاي صاحب تکنولوژي که نام آن در ليست Vendor آورده شده است و امتياز آن
۲٫ ورود جداول پشتيبان که اطلاعات فني موجود در Proposal به صورت مقدار ذکر شده و در صورت نياز واحد عدد يا عبارت مربوطه است.
امتياز دهي

۱٫ امتياز دهي بخش Vendor
اين بخش که معمولا بين ۳۰ تا ۳۵ درصد امتياز کل پروژه را در بر مي گيرد در مورد هر آيتم با توجه به ليستي که کنسرسيوم مربوطه اعلام کرده است که شامل نام کارخانه و کشور آن است در بخش امتياز دهي ثبت مي شود و پس از آن در مرحله محاسبه امتياز از کمترين ۳ عدد بدست آمده از حاصلضرب عدد امتياز Vendor در امتياز کشور ميانگين گرفته شده و به عنوان امتياز آن آيتم محسوب مي شودو
۲٫ امتياز دهي مابقي بخش ها
در مورد هر آيتم با توجه به مقاديري که در جدول پشتيبان آمده است و توسط کنسرسيوم اعلام شده است با توجه به نظر کارشناس مربوطه امتياز ثبت مي شود.
گزارش گيري

امتيازات ثبت شده همگي در آخرين سطح تعيين شده توسط کارشناس ثبت شده است و در مرحله جمع بندي و گزارش گيري نهايي امتياز هر آيتم در ارزش وزني آيتم ضرب شده و و مجموع آن به عنوان امتياز آيتم سطح بالاتر آن در نظر گرفته مي شود و بدين ترتيب اين روند تا سطح يک ادامه مي يابد و امتياز نهايي کنسرسيوم تعيين مي گردد.

لازم به ذکر است که گزارش به گونه طراحي شده است که با کليک روي امتيازات سطح بالاتر صفحه امتيازاتي باز مي شود که حاصل جمع آن ها به صورت آن امتياز محاسبه شده و بدين صورت مي توان به راحتي نياز امکان پاسخ دهي به چگونگي محاسبه امتياز را جوابگو بود.
به عنوان مثال در مورد Vendor در آخرين سطح شخص ناظر مي تواند ليست پيشنهادي کنسرسيوم شامل نام کارخانه و کشور و امتياز حاصلضرب و ميانگين را مشاهده کند.
معماري سايت
معماري اعمال شده در برنامه Visio و با توجه به استاندارد هاي طراحي تعيين شده است.
واسط کاربر
فرم ها توسط برنامه Visual Basic.net 2005 نوشته شده است که کد مربوطه در فصول آتي ارائه مي شود.
پايگاه داده
پايگاه داده ها در Sql server 2005 تهيه شد که شامل جداول و Viewها و Stored Procedure ها و Triggerهايي که از دو نوع نوشته شده در Sql Server و در SQL Server Business Intelligence Development Studio تنظيم شده مي باشد.
پردازش ها
گزارش ها توسط Reporting Service برنامه Sql Server تنظيم شده است.

فصل سوم
طراحي

مقدمه
جهت طراحي پايگاه داده ها پس از انجام مصاحبه و جلسات متعدد نمودار جريان داده ها در دو سطح صفر و يک به شرح زير کشيده شد:

DFD سطح صفر

DFD سطح يک

ER
سپس براي ثبت اطلاعات پايه ۳ جدول
۱٫ Tenderer که شامل موارد
۱٫۱٫ کد کنسرسيوم
۱٫۲٫ نام کنسرسيوم
۲٫ Criteria که شامل موارد
۲٫۱٫ کد آيتم (Criteria_ID)
2.2. شرح مورد بررسي در ارزيابي (Criteria name)
2.3. سطح آيتم (Level)
2.4. ارزش وزني (Weight Level)
2.5. سطح مرجع آن آيتم (Level Reference)
2.6. بيت نمايش (Show)
3. Auxiliary که شامل موارد
۳٫۱٫ کد آيتم (Criteria)
3.2. کد کنسرسيوم (Tenderer)
3.3. مقدار پارامتر(Value)
3.4. واحد پارامتر(Unit)
و امتيازات پايه ۲ جدول
۱٫ Vendor که شامل موارد
۱٫۱٫ کد کارخانه(Vendor ID)

۱٫۲٫ نام کارخانه(Vendor Name)
1.3. امتياز تکنولوژي کارخانه(Vendor Weight)
2. Country که شامل موارد
۲٫۱٫ کد کشور(Country ID)
2.2. نام کشور(Country Name)
2.3. امتياز تکنولوژي کشور(Country Weight)
و ثبت امتيازات ۲ جدول
۱٫ Evaluation که شامل موارد

۱٫۱٫ کد امتياز(Evaluation ID)
1.2. کد آيتم (Criteria)
1.3. کد کنسرسيوم(Tenderer)
1.4. کد کارخانه(Vendor)
1.5. کد کشور(Country)
2. Weight که شامل موارد
۲٫۱٫ کد آيتم (Criteria)
2.2. کد کنسرسيوم (Tenderer)
2.3. امتياز(Weight)

طراحي شد که در شکل زير قابل مشاهده است.

فصل چهارم
پياده سازي

دياگرام
پس از نرمال سازي جداول ER پايگاه داده ها به صورت زير در SQL Server 2005 طراحي شد. که در ادامه کد ساخت ديتابيس و جداول نيز آورده شده است.

کد ايجاد Stored Procedure
جهت ورود اطلاعات به سه جدول Stored Procedure هايي نوشته شد که در فرم ورود اطلاعات فراخواني مي شود که کد ساخت در پايين قابل مشاهده است
لازم به ذکر است جهت دادن شماره کد سريالي به آيتم جديد ثبت شده در دو مورد آخر با استفاده از دستور Select بزرگترين شماره کد گرفته شده و يک واحد افزايش مي يابد و سپس به عنوان کد آيتم در رکورد جديد ثبت مي شود.

۱٫ Insert into Criteria
USE [proposal_405]
GO
/****** Object: StoredProcedure [dbo].[tblCriteira_insert] Script Date: 09/07/2007 23:54:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE procedure [dbo].[tblCriteira_insert]
@CriteriaID nvarchar(12),
@CriteriaName nvarchar(50),
@level int,
@WLevel float
AS
INSERT INTO [proposal_405].[dbo].[Criteria]
([CriteriaID]
,[CriteriaName]
,[Show]
,[Level]
,[WLevel]
,[LevelRef])

VALUES
(@CriteriaID
,@CriteriaName
,1
,@level
,@WLevel
,left(@CriteriaID,len(@CriteriaID)-charindex(‘-‘,reverse(@CriteriaID),1)))
2. Insert into Vendors
USE [proposal_405]
GO
/****** Object: StoredProcedure [dbo].[tblvendors_insert] Script Date: 09/07/2007 23:56:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[tblvendors_insert]
@VendorName nvarchar(50)

,@vendorweight decimal(6,3)
as
declare @VendorID int
select @VendorID=max(VendorID) from vendors
if @VendorID is null
begin
set @VendorID=0
end
set @VendorID=@VendorID+1

INSERT INTO [proposal_405].[dbo].[Vendors]
([VendorID]
,[VendorName]
,[vendorweight])
VALUES
(@VendorID
,@VendorName
,@vendorweight)
3. Insert into Evaluation
USE [proposal_405]
GO
/****** Object: StoredProcedure [dbo].[tblEvaluation_insert] Script Date: 09/07/2007 23:57:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create procedure [dbo].[tblEvaluation_insert]
@Tenderer char(10)
,@Criteria nvarchar(12)
,@Vendor char(4)
,@Country char(3)
AS
declare @EvaluationID int
select @EvaluationID=max(EvaluationID) from dbo.Evaluation
if @EvaluationID is null
begin
set @EvaluationID=0
end
set @EvaluationID=@EvaluationID+1

INSERT INTO [proposal_405].[dbo].[Evaluation]
([EvaluationID]
,[Tenderer]
,[Criteria]
,[Vendor]
,[Country])
VALUES
(@EvaluationID
,@Tenderer
,@Criteria
,@Vendor
,@Country)
کد ايجاد Trigger
جهت انجام امر امتياز دهي صحيح دو Trigger که در صورت تغييرهر رکوردي در دو جدول Country و Evaluation بلافاصله اجرا مي گردد، طراحي شد:
۱٫ tblweightTrigger.vb
به علت آنکه در امتياز دهي کارخانه صاحب تکنولوژي، شرکت کننده در مناقصه مختار است ليستي از کارخانه ها و کشور هاي مورد نظر خود را معرفي کند و در زمان ورود اطلاعات نيز تمامي ليست وارد جدول Evaluation مي شود جهت امتياز دهي لازم است مبنايي براي دادن امتياز به آن آيتم در نظر گرفته شود.
پس از بررسي جوانب مختلف کارشناسان فني مبنا را به صورت زير اعلام کردند:

“امتياز به صورت امتيازميانگين ۳ عدد کمينه حاصلضرب امتياز کارخانه در امتياز کشور محاسبه خواهد شد”
بدين سبب در هنگام تغيير هر رکورد که شامل سه تغيير Insert, Update , Delete مي شود کد آيتم و کنسرسيوم از رکورد مورد تغيير گرفته شده و در جدول Evaluation تمامي موارد مشترک در اين دو آيتم Select شده و ميانگين ۳ عدد کمترين حاصلضرب امتياز کارخانه در امتياز کشور گرفته شده و در جدول Weight ثبت مي شود. (اگر آيتم موجود نباشد Insert اگر موجود باشد Update و در صورت اينکه تغيير سطر موجب حذف امتياز شده باشد Delete صورت مي پذيرد)

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

Partial Public Class Triggers
‘ Enter existing table or view for the target and uncomment the attribute line
<Microsoft.SqlServer.Server.SqlTrigger(Name:=”tblweightTrigger”, Target:=”Evaluation”, Event:=”FOR UPDATE, INSERT, DELETE”)> _
Public Shared Sub tblweightTrigger()
‘ Replace with your own code
Dim i As Integer = 0
Dim sqlCn As New SqlConnection(“Context Connection=true”)
Dim sqlCm As New SqlCommand
Dim sqlTrCtx As SqlTriggerContext = SqlContext.TriggerContext
Dim spPipe As SqlPipe = SqlContext.Pipe
Dim sXml As SqlXml = sqlTrCtx.EventData()
Dim sqlDr, dr, drin As SqlDataReader
If sqlTrCtx.TriggerAction = TriggerAction.Delete Then
sqlCm.CommandText = “select tenderer,criteria from deleted”
Else
sqlCm.CommandText = “select tenderer,criteria from inserted”
End If
sqlCm.Connection = sqlCn
sqlCn.Open()
sqlDr = sqlCm.ExecuteReader
Dim criteria, tenderer As String
sqlDr.Read()
criteria = sqlDr.GetValue(1).ToString
tenderer = sqlDr.GetValue(0).ToString
sqlDr.Close()
sqlCm.CommandText = “select top(3) weightcountry*vendorweight from evaluationview where tenderer='” & tenderer & “‘ and criteriaid = ‘” & criteria & “‘ and weightcountry*vendorweight<>0 order by weightcountry*vendorweight”
dr = sqlCm.ExecuteReader
Dim av As Single = 0
Dim count As Integer = 0
For i = 0 To 2
If dr.Read() Then
av += CType(dr.GetValue(0), Single)
count += 1
End If
Next
av = av / count
dr.Close()
If count <> 0 Then
sqlCm.CommandText = “select * from weight where tenderer='” & tenderer & “‘ and criteriaid = ‘” & criteria & “‘”
drin = sqlCm.ExecuteReader
If drin.Read Then
sqlCm.CommandText = “update weight set weight=” & av & ” where tenderer='” & tenderer & “‘ and criteriaid = ‘” & criteria & “‘”
Else
sqlCm.CommandText = “insert into weight(criteriaid,tenderer,weight) values(‘” & criteria & “‘,'” & tenderer & “‘,” & av & “)”
End If
drin.Close()
sqlCm.ExecuteNonQuery()

Else
sqlCm.CommandText = “delete from weight where tenderer='” & tenderer & “‘ and criteriaid = ‘” & criteria & “‘”
sqlCm.ExecuteNonQuery()
End If
sqlCn.Close()
End Sub
End Class

۲٫ tblCountryTrigger.vb
در مواردي اين امکان وجود داشت که امتياز کشوري تغيير کند به سبب آنکه کليه سطوري که شامل امتياز آن کشور هستند به صورت دستي مورد بررسي قرار نگيرند Trigger زير نوشته شد که در آن اين کار به صورت اتوماتيک در هنگام تغيير امتياز کشور در کليه سطور حاوي کد کشور مربوطه در جدول Evaluation صورت مي پذيرد.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

Partial Public Class Triggers
‘ Enter existing table or view for the target and uncomment the attribute line
<Microsoft.SqlServer.Server.SqlTrigger(Name:=”tblCountryTrigger”, Target:=”Countries”, Event:=”FOR UPDATE”)> _
Public Shared Sub tblCountryTrigger()
‘ Replace with your own code
Dim sqlCn As New SqlConnection(“Context Connection=true”)
Dim sqlCm As New SqlCommand
Dim sqlTrCtx As SqlTriggerContext = SqlContext.TriggerContext
Dim spPipe As SqlPipe = SqlContext.Pipe
Dim sXml As SqlXml = sqlTrCtx.EventData()
sqlCm.CommandText = “select * from inserted”
Dim sqlDr As SqlDataReader
sqlCm.Connection = sqlCn
sqlCn.Open()
sqlDr = sqlCm.ExecuteReader
Dim id, eval(10000) As String
Dim i As Integer = -1
sqlDr.Read()
id = sqlDr.GetValue(0).ToString
sqlDr.Close()
sqlCm.CommandText = “select evaluationid from Evaluation where country='” & id & “‘”
sqlDr = sqlCm.ExecuteReader
While sqlDr.Read
i += 1
eval(i) = sqlDr.GetValue(0).ToString
End While
sqlDr.Close()
If i <> -1 Then
For j As Integer = 0 To i
sqlCm.CommandText = “update Evaluation set country='” & id & “‘ where evaluationid='” & eval(j) & “‘”
sqlCm.ExecuteNonQuery()
Next
End If
End Sub
End Class

نقشه سايت

• General Information
o Bidder
• Criteria
 Criteria 1
 Criteria 2
 Criteria 3
 Criteria 4
 Criteria 5
• Vendor
• Country
• Evaluation for Vendor
• Evaluation
• Add New
• Evaluation
• Evaluation
• Add New
• Report
• Compare Bidders

فرم هاي واسط کاربر
۱٫ مشاهده اطلاعات کنسرسيوم و افزودن آن
نام کامل کنسرسيوم ها با علامت اختصاري منتخب آنها در اين فرم قابل افزايش و ويرايش است.

<%@ Page Language=”VB” MasterPageFile=”~/MasterPage.master” AutoEventWireup=”false” CodeFile=”Tenderer.aspx.vb” Inherits=”Tenderer” title=”کنسرسيوم” %>
<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ Runat=”Server”>
<table border=”0″ cellpadding=”0″ cellspacing=”0″ style=”width: 100%; height: 100%”>
<tr>
<td style=”width: 30%; height: 20%;” rowspan=”2″>
&nbsp;<asp:FormView ID=”FormView1″ runat=”server” CellPadding=”4″ DataKeyNames=”Tenderer”
DataSourceID=”TendererSource” DefaultMode=”Insert” ForeColor=”#333333″>
<FooterStyle BackColor=”#5D7B9D” Font-Bold=”True” ForeColor=”White” />
<EditRowStyle BackColor=”#999999″ />
<EditItemTemplate>
Tenderer:
<asp:Label ID=”TendererLabel1″ runat=”server” Text='<%# Eval(“Tenderer”) %>’></asp:Label><br />
TendererName:
<asp:TextBox ID=”TendererNameTextBox” runat=”server” Text='<%# Bind(“TendererName”) %>’>
</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>
<RowStyle BackColor=”#F7F6F3″ ForeColor=”#333333″ />
<PagerStyle BackColor=”#284775″ ForeColor=”White” HorizontalAlign=”Center” />
<InsertItemTemplate>
<table>
<tr>
<td align=”left” style=”width: 100px; background-color: aqua”>
کنسرسيوم</td>
<td style=”width: 100px”>
<asp:TextBox ID=”TendererTextBox” runat=”server” Text='<%# Bind(“Tenderer”) %>’></asp:TextBox></td>
</tr>
<tr>
<td align=”left” style=”width: 100px; background-color: aqua”>
نام کامل</td>
<td style=”width: 100px”>
<asp:TextBox ID=”TendererNameTextBox” runat=”server” Text='<%# Bind(“TendererName”) %>’></asp:TextBox></td>
</tr>
<tr>
<td colspan=”2″>
<asp:LinkButton ID=”InsertButton” runat=”server” CausesValidation=”True” CommandName=”Insert”
Text=”افزودن”></asp:LinkButton>
<asp:LinkButton ID=”InsertCancelButton” runat=”server” CausesValidation=”False” CommandName=”Cancel”
Text=”انصراف”></asp:LinkButton></td>
</tr>
</table>
</InsertItemTemplate>
<ItemTemplate>
Tenderer:
<asp:Label ID=”TendererLabel” runat=”server” Text='<%# Eval(“Tenderer”) %>’></asp:Label><br />
TendererName:
<asp:Label ID=”TendererNameLabel” runat=”server” Text='<%# Bind(“TendererName”) %>’></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>
<HeaderStyle BackColor=”#5D7B9D” Font-Bold=”True” ForeColor=”White” />
</asp:FormView>
</td>
<td style=”height: 100%”>
<asp:GridView ID=”GridView1″ runat=”server” AllowSorting=”True” AutoGenerateColumns=”False”
CellPadding=”4″ DataSourceID=”TendererSource” EmptyDataText=”There are no data records to display.”
ForeColor=”#333333″ GridLines=”None” HorizontalAlign=”Center” DataKeyNames=”Tenderer”>
<FooterStyle BackColor=”#5D7B9D” Font-Bold=”True” ForeColor=”White” />
<Columns>
<asp:BoundField DataField=”Tenderer” HeaderText=”نام” ReadOnly=”True” SortExpression=”Tenderer” />
<asp:BoundField DataField=”TendererName” HeaderText=”شرح” SortExpression=”TendererName” />
<asp:CommandField CancelText=”انصراف” EditText=”ويرايش” ShowEditButton=”True” UpdateText=”تائيد” />
<asp:CommandField DeleteText=”حذف” ShowDeleteButton=”True” />
</Columns>
<RowStyle BackColor=”#F7F6F3″ ForeColor=”#333333″ />
<EditRowStyle BackColor=”#999999″ />
<SelectedRowStyle BackColor=”#E2DED6″ Font-Bold=”True” ForeColor=”#333333″ />
<PagerStyle BackColor=”#284775″ ForeColor=”White” HorizontalAlign=”Center” />
<HeaderStyle BackColor=”#5D7B9D” Font-Bold=”True” ForeColor=”White” />
<AlternatingRowStyle BackColor=”White” ForeColor=”#284775″ />
</asp:GridView>
<asp:SqlDataSource ID=”TendererSource” runat=”server” ConnectionString=”<%$ ConnectionStrings:proposal_405ConnectionString %>”
DeleteCommand=”DELETE FROM [Tenderers] WHERE [Tenderer] = @Tenderer” InsertCommand=”INSERT INTO [Tenderers] ([Tenderer], [TendererName]) VALUES (@Tenderer, @TendererName)”
ProviderName=”<%$ ConnectionStrings:proposal_405ConnectionString.ProviderName %>”
SelectCommand=”SELECT [Tenderer], [TendererName] FROM [Tenderers]” UpdateCommand=”UPDATE [Tenderers] SET [TendererName] = @TendererName WHERE [Tenderer] = @Tenderer”>
<DeleteParameters>
<asp:Parameter Name=”Tenderer” Type=”String” />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name=”TendererName” Type=”String” />
<asp:Parameter Name=”Tenderer” Type=”String” />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name=”Tenderer” />
<asp:Parameter Name=”TendererName” />
</InsertParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
</asp:Content>