StartIndex не может быть меньше нуля.Имя параметра: startIndex Используете HijriDatePicker? - PullRequest
0 голосов
/ 20 октября 2018

Я использую много экземпляров Hijri Gerogian Datapicker с контролем сетки, когда я удаляю из таблицы, я получаю следующую ошибку:

StartIndex cannot be less than zero.
Parameter name: startIndex

Line 173:                    //to manage multiple instances of user control postback, incase the postback happend due to culture changeed in current control,
Line 174:                    //the other user contrls culture drop down list to be changed accordingly. Also year and month dropdown lists according to culture 
Line 175:                    if (strPostBackControlName != "" && strPostBackControlName.Substring(strPostBackControlName.LastIndexOf("$")) == "$ddlLocaleChoice")
Line 176:                    {
Line 177:                        if (ddlLocaleChoice.SelectedValue == arabicCulture.Name)


[ArgumentOutOfRangeException: StartIndex cannot be less than zero.
Parameter name: startIndex]
   System.String.Substring(Int32 startIndex, Int32 length) +13011515
   System.String.Substring(Int32 startIndex) +15
   Hijri_Greg_DatePicker_Sample.HijriGregDatePicker.Page_Load(Object sender, EventArgs e) in C:\Users\Mawni\Desktop\Hijri_Greg_DatePicker_Sample\HijriGregDatePicker.ascx.cs:175
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

Любая помощь?

1 Ответ

0 голосов
/ 20 октября 2018

Посмотрите на этот фрагмент кода:

strPostBackControlName.LastIndexOf("$")

Он вернет последний индекс $ в строке, но когда $ не найден, он вернет -1 в качестве результата.Позже вы попытаетесь вызвать strPostBackControlName.Substring с этим результатом, но Substring имеет следующий прототип:

public string Substring (int startIndex);

Конечно, вы не можете вызвать его с начальным индексом меньше 0 (потому что индексы в строкеначать с 0).Добавьте проверку того, что LastIndexOf("$") не является -1, или убедитесь, что strPostBackControlName всегда содержит $.

...