مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

yasser93

عضویت از 1395/06/07

مشخص کردن آیتم پیش فرض کمبو باکس

  • سه شنبه 9 شهریور 1395
  • 04:43
تشکر میکنم

با سلام خدمت دوستان گرامی
من دوتا پنجره دارم تو یکی دیتاگرید قرار داره که اطلاعات یکی از ستوناش تو پنجره دیگری که یک کمبوباکس وجود داره بایند شده. یعنی آیتم های بایند شده موجود در کمبو باکس همگی در اون ستون از دیتا گرید وجود داره.
حالا من میخوام وقتی پنجره دوم باز میشه آتم کمبو باکس خالی نباشه و رو مقداری که من براش میفرستم set بشه.
تا اینجا مشکلی نیس فقط نمیدونم چطوری این آیتم رو ست کنم. مثلا دستورات زیر رو امتحان کردم ولی بازم هیچ مقداری نگرفت
 


cmb.SelectedItem = Item;
cmb.SelectedValue = Item;
cmb.Text = Item;
.
.
.
.

از wpf و Entity-FrameWork 6.0 استفاده میکنم.

واقعا دیوانه ام کرده این مسئله
پیشاپیش ممنون بابت راهنمایی هاتون

پاسخ های این پرسش

تعداد پاسخ ها : 11 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • سه شنبه 9 شهریور 1395
  • 08:33

کد هاتون رو در ادمه این تاپیک قرار بدید تا بررسی ش کنم. و نکته دیگه اینکه پروژه خودتون رو خط به خط trace کنید تا متوجه بشید که داخل آیتم چی پر شده که وقتی برابر cmb.SelectedItem قرار میگیرد مقدار صحیح را به ان انتقال دهد.

-- آیا ItemSource کومبوباکس cmb را پر کرده اید ؟

کاربر سایت

yasser93

عضویت از 1395/06/07

  • چهارشنبه 10 شهریور 1395
  • 01:43

والا کد خاصی ننوشتم براش. فقط با استفاده از دستورات ItemsSource و DisplayPath اطلاعاتشو بایند کردم تو Loaded

بعد هم همون اول فراخوانی پینجره میخوام بهش مقدار بدم. مقدار رو هم تست کردم مطمئنم درست ارسال میشه اما مقدار نمیگیره

کاربر سایت

yasser93

عضویت از 1395/06/07

  • چهارشنبه 10 شهریور 1395
  • 02:06
یه سوال. ایا میشه ایتم های داخل کمبوباکس رو جستجو کرد با یه حلقه و سپس index رو بدست اورد.بعد از طریق selectedindex بهش مقدار بدم ؟؟
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 10 شهریور 1395
  • 09:48

تصویر برنامه :

کد XAML :

<Window x:Class="WpfApplication8.vwComboBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="vwComboBox" Height="211" Width="300" Loaded="Window_Loaded">
    <Grid>
        <ComboBox x:Name="cboUsers" DisplayMemberPath="Name" SelectedValuePath="UserID" HorizontalAlignment="Left" Margin="10,38,0,0" VerticalAlignment="Top" Width="272"/>
        <TextBox x:Name="txtSearch" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="176"/>
        <Label x:Name="lblShow" Content="" BorderBrush="Olive" HorizontalAlignment="Left" Margin="10,65,0,0" VerticalAlignment="Top" Height="105" Width="272" BorderThickness="1"/>
        <Button x:Name="btnSearch" Content="Search" HorizontalAlignment="Left" Margin="191,10,0,0" VerticalAlignment="Top" Width="91" Height="23" Click="btnSearch_Click"/>

    </Grid>
</Window>

کد سی شارپ :

public partial class vwComboBox : Window
    {
        public vwComboBox()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<User> result = new List<User>()
            {
                new User(){UserID = 1, Name = "Sajad"},
                new User(){UserID = 2, Name = "Sima"},
                new User(){UserID = 3, Name = "Iman"},
                new User(){UserID = 4, Name = "Mehdi"}
            };
            cboUsers.ItemsSource = result;
        }

        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            lblShow.Content = "";
            foreach (var item in cboUsers.Items)
            {
                var cb = item as User;
                if (cb.Name.ToLower().Contains(txtSearch.Text.ToLower()))
                {
                    lblShow.Content += cb.UserID + " - " +cb.Name+"\r\n";
                }
            }
        }
    }

    class User
    {
        public int UserID { get; set; }
        public string Name { get; set; }
    }

 

کاربر سایت

yasser93

عضویت از 1395/06/07

  • چهارشنبه 10 شهریور 1395
  • 10:46
خیلی ممنون. الان اگه اشتباه نکنم برنامه شما با زدن جستجو اسمی که وارد کردید رو از کمبو باکس پیدا میکنه و تو لیبل نشون میده؟ من میخوام تو خود کمبوباکس نشون بده.یعنی selectedItem عوض بشه بره رو اسمی که وارد کردید.
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 10 شهریور 1395
  • 12:10

برای این کار کافیست خصوصیت IsEditable  کومبوباکس را فعال کنید.

<ComboBox x:Name="cboUsers"  IsEditable="True" DisplayMemberPath="Name" SelectedValuePath="UserID" HorizontalAlignment="Left" Margin="10,38,0,0" VerticalAlignment="Top" Width="272"/>

 

کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 10 شهریور 1395
  • 12:14

اینم یک مقاله خوب برای کومبوباکس با حالت AutoComplete :

A Reusable WPF Autocomplete TextBox

کاربر سایت

yasser93

عضویت از 1395/06/07

  • چهارشنبه 10 شهریور 1395
  • 12:33
الان نمیتونم امتحان کنم در هر صورت ممنون. فقط من به یه مشکل عجیب خوردم الان. برنامه بدون هیچ مشکلی کار میکنه ولی وقتی فایل ستاپ میسازم براش و نصب میکنم وقتی میخوام یه داده ثبت کنم خطای sttoped woking میده. Debug رو زدم خطاش اینه. system.data.entity.core.entitycommandexecutionexception occurred in presentationframework.dll اینم بگم این اولین پروژه تجاریمه که میخوام ستاپ بگیرم ازش.هیچ تجربه ای ندارم در این مورد
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • پنجشنبه 11 شهریور 1395
  • 08:11

دقت کنید قبل از publish پروژه داخل Sloution تمامی refrence هایی که به پروژه اضافه کرده اید خاصیت CopyLocal = True  باشد .

برای ساخت فایل setup میتونید از مقاله زیر کمک بگیرید :

ایجاد فایل نصبی برنامه (Setup) توسط Visual Studio 2013

کاربر سایت

yasser93

عضویت از 1395/06/07

  • پنجشنبه 11 شهریور 1395
  • 08:15
با ویژوال نمیسازم. با setup factori راحت تر و قشنگ تره. ولی با ویژوال هم همین مشکلو داشتم. حالا من یه تاپیک دیگه زدم برا این موضوع اونجا بیشتر توضیح دادم. بازم ممنون
کاربر سایت

yasser93

عضویت از 1395/06/07

  • پنجشنبه 11 شهریور 1395
  • 08:48
خیلی از رفرنسا false بود ولی بازم درست نشد. ریپورتایی که از پایگاه داده میگیرم انجام میشه اما برا عملیات حذف و ثبت و ویرایش که از طریق stored procedure ها انجام میدم خطا میده 😳
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)