• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کار هزمان با Gridview و Detailsview و اشکال زمان آپدیت کردن داده ها

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
سلام.
من از یه کنترل GridView و یک DetailsView به طور همزمان استفاده کردم که هر کدوم یه SqlDataSource داره. قراره با انتخاب کردن یک فیلد از جدول DetailsView در حالت ادیت قرار بگیره تا اطلاعات بانک رو ادیت کنه. همه چیز دسته تا دکمه آپدیت کلیک میشه ، اونوقته که compiler ایراد زیر رو می گیره.

The data types text and nvarchar are incompatible in the equal to operator.


من برای خانه های بانک اطلاعاتیم از nvarchar استفاده کردم تا بتونم فارسی توش وارد کنم. ایراد از اونه ؟ و راه حل چیه ؟

اینم کد صفحمه
کد:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConflictDetection="CompareAllValues" 
            ConnectionString="<%$ ConnectionStrings:GTLConnectionString %>" 
            DeleteCommand="DELETE FROM [Articles] WHERE [ArticleID] = @original_ArticleID AND [Title] = @original_Title AND [FileName] = @original_FileName AND [Abstract] = @original_Abstract" 
            InsertCommand="INSERT INTO [Articles] ([Title], [FileName], [Abstract]) VALUES (@Title, @FileName, @Abstract)" 
            OldValuesParameterFormatString="original_{0}" 
            SelectCommand="SELECT [ArticleID], [Title], [FileName], [Abstract] FROM [Articles]" 
            UpdateCommand="UPDATE [Articles] SET [Title] = @Title, [FileName] = @FileName, [Abstract] = @Abstract WHERE [ArticleID] = @original_ArticleID AND [Title] = @original_Title AND [FileName] = @original_FileName AND [Abstract] = @original_Abstract">
            <DeleteParameters>
                <asp:Parameter Name="original_ArticleID" Type="Int32" />
                <asp:Parameter Name="original_Title" Type="String" />
                <asp:Parameter Name="original_FileName" Type="String" />
                <asp:Parameter Name="original_Abstract" Type="String" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="FileName" Type="String" />
                <asp:Parameter Name="Abstract" Type="String" />
                <asp:Parameter Name="original_ArticleID" Type="Int32" />
                <asp:Parameter Name="original_Title" Type="String" />
                <asp:Parameter Name="original_FileName" Type="String" />
                <asp:Parameter Name="original_Abstract" Type="String" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="FileName" Type="String" />
                <asp:Parameter Name="Abstract" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConflictDetection="CompareAllValues" 
            ConnectionString="<%$ ConnectionStrings:GTLConnectionString %>" 
            DeleteCommand="DELETE FROM [Articles] WHERE [ArticleID] = @original_ArticleID AND [Title] = @original_Title AND [FileName] = @original_FileName AND [Abstract] = @original_Abstract" 
            InsertCommand="INSERT INTO [Articles] ([Title], [FileName], [Abstract]) VALUES (@Title, @FileName, @Abstract)" 
            OldValuesParameterFormatString="original_{0}" 
            SelectCommand="SELECT [ArticleID], [Title], [FileName], [Abstract] FROM [Articles] WHERE ([ArticleID] = @ArticleID)" 
            UpdateCommand="UPDATE [Articles] SET [Title] = @Title, [FileName] = @FileName, [Abstract] = @Abstract WHERE [ArticleID] = @original_ArticleID AND [Title] = @original_Title AND [FileName] = @original_FileName AND [Abstract] = @original_Abstract">
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="ArticleID" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
            <DeleteParameters>
                <asp:Parameter Name="original_ArticleID" Type="Int32" />
                <asp:Parameter Name="original_Title" Type="String" />
                <asp:Parameter Name="original_FileName" Type="String" />
                <asp:Parameter Name="original_Abstract" Type="String" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="FileName" Type="String" />
                <asp:Parameter Name="Abstract" Type="String" />
                <asp:Parameter Name="original_ArticleID" Type="Int32" />
                <asp:Parameter Name="original_Title" Type="String" />
                <asp:Parameter Name="original_FileName" Type="String" />
                <asp:Parameter Name="original_Abstract" Type="String" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="FileName" Type="String" />
                <asp:Parameter Name="Abstract" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ArticleID" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            </Columns>
        </asp:GridView>
        <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
            DataKeyNames="ArticleID" DataSourceID="SqlDataSource2" Height="50px" 
            Width="125px">
            <Fields>
                <asp:BoundField DataField="ArticleID" HeaderText="ArticleID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="ArticleID" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="FileName" HeaderText="FileName" 
                    SortExpression="FileName" />
                <asp:BoundField DataField="Abstract" HeaderText="Abstract" 
                    SortExpression="Abstract" />
                <asp:CommandField ShowEditButton="True" />
            </Fields>
        </asp:DetailsView>
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
شما مطمئنی که تو دیتابیس از TEXT یا nTEXT استفاده نکردی؟

یه چیزی هم تو کد شما عجیبه
دستورات update و delete رو خود ویزارد براتون generate کرده ؟ چون برای شرط where همه فیلد ها نیازی نیست مقایسه شه، کلید اصلی جدول کافیه
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
شما مطمئنی که تو دیتابیس از TEXT یا nTEXT استفاده نکردی؟

یه چیزی هم تو کد شما عجیبه
دستورات update و delete رو خود ویزارد براتون generate کرده ؟ چون برای شرط where همه فیلد ها نیازی نیست مقایسه شه، کلید اصلی جدول کافیه

خب یکی از فیلدهای دیتابیس من متغیر ntext میگیره. ایراد از اونه؟
این کدیه که خودش تولید کرده البته من اون قسمتاش رو حذف می کنم و فقط ID رو چک می کنه. البته ایراد از اون نیست به واقع
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
خب یکی از فیلدهای دیتابیس من متغیر ntext میگیره. ایراد از اونه؟
این کدیه که خودش تولید کرده البته من اون قسمتاش رو حذف می کنم و فقط ID رو چک می کنه. البته ایراد از اون نیست به واقع
بله ، ایراد از اون دستورات نیست، برام عجیب بود فقط

مشکل شما از فیلد ntext هست
اون رو به nvarchar max تغییر بدید، مشکل حل میشه
 
بالا