سؤال

ولقد كنت أبحث من خلال بعض الأسئلة مماثلة دون أي حظ. ما أود القيام به هو يملك gridview التي لبعض البنود يظهر linkbutton ولبنود أخرى يظهر ارتباط تشعبي. هذا هو رمز لدي حاليا:

public void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var data = (FileDirectoryInfo)e.Row.DataItem;
        var img = new System.Web.UI.HtmlControls.HtmlImage();
        if (data.Length == null)
        {
            img.Src = "/images/folder.jpg";
            var lnk = new LinkButton();
            lnk.ID = "lnkFolder";
            lnk.Text = data.Name;
            lnk.Command += new CommandEventHandler(changeFolder_OnCommand);
            lnk.CommandArgument = data.Name;
            e.Row.Cells[0].Controls.Add(lnk);
        }
        else
        {
            var lnk = new HyperLink();
            lnk.Text = data.Name;
            lnk.Target = "_blank";
            lnk.NavigateUrl = getLink(data.Name);
            e.Row.Cells[0].Controls.Add(lnk);
            img.Src = "/images/file.jpg";
        }
        e.Row.Cells[0].Controls.AddAt(0, img);
    }
}

وحيث الخلية الأولى هي TemplateField. حاليا، كل شيء يعرض بشكل صحيح، ولكن linkbuttons لا تثير معالج الحدث الأوامر، وكافة عناصر التحكم تختفي على إعادة النشر.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

وأعتقد أن عليك أن محاولة فرض rebind من GridView <م> على إعادة النشر. وهذا يضمن أن أي ضوابط ديناميكية يتم إنشائها ومعالجات الأحداث التي ركبت. يجب أن هذا أيضا منع اختفائهم بعد إعادة النشر.

وIOW، اتصل DataBind() على GridView على إعادة النشر.

نصائح أخرى

ويمكنك أيضا إضافة هذه في حال Row_Created ومن ثم لم يكن لديك للتراجع! الاختيار إعادة النشر

لماذا لا تقوم بإنشاء زر إلزامي، وخلق hypen إلزامي (باستخدام عنصر تحكم حرفية) ومن ثم استخدام البيانات تركيب ملزمة وتعيين الرؤية التي هي الخاصية مرئي الضوابط إلى صواب أو خطأ حسب الحاجة:

Visible='<%#((FileDirectoryInfo)Container.DataItem).Length == null) %>' 

وشيء من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top