Сделайте нижний колонтитул GridView видимым, когда не будет никаких связанных данных

Просто проверьте тип данных части message JSON и, соответственно, используйте ее.

Посмотрите на этот пример.

package test;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class jsonDeco {

    public static void main(String[] args) throws JSONException {
        // TODO Auto-generated method stub
        JSONObject a = new JSONObject("{ \"status_code\": 2002, \"sub_status_code\": 2002,"
                + " \"message\": \"Service Invoke Create Step2 Success\"} ");
        JSONObject b = new JSONObject("{ \"status_code\": 7000, \"sub_status_code\": 7001,"
                + " \"message\": [ \"Step No: Step 2: Line No: 92 Variable Name: lan-pool-ipv6-mask"
                + " Error Code: 7516 Error Detail: Lan Pool IPV6 network address is invalid Description: \" ]}");
        parseAORB(b);
    }

    public static void parseAORB(JSONObject input) throws JSONException
    {
        String code = input.getString("status_code");
        System.out.println(code);
        System.out.println(nameOf(input.get("message")));
        if(nameOf(input.get("message")).equals("String"))
        {
            System.out.println("inside string");
            String message = input.getString("message");
            System.out.println("Message is : "+message);
        }
        else if (nameOf(input.get("message")).equals("JSONArray"))
        {
            JSONArray message = input.getJSONArray("message");
            System.out.println("inside jsonarray");
            System.out.println("Message is : "+message.getString(0).toString());
        }   
    }

    private static String nameOf(Object o) {
        return o.getClass().getSimpleName();
    }
}

Вы можете передать переменную a или b для проверки.

P.S. В комментарии оба примера неверны. В первом из них есть еще одна запятая , в конце, а во втором примере вы не закрыли фигурную скобку }.

5
задан abatishchev 30 December 2011 в 13:03
поделиться

1 ответ

Самый простой способ сделать это - связать массив длиной один. Вы можете поместить в него все, что захотите, чтобы определить, что это пустая строка. В вашем методе GridViews RowDataBound проверьте, является ли элемент данных фиктивной строкой (сначала убедитесь, что RowType является DataRow, прежде чем пытаться проверить данные). Если это фиктивная строка, установите для видимости строк значение false. Нижний колонтитул и заголовок теперь должны отображаться без каких-либо данных.

Убедитесь, что для свойства ShowFooter установлено значение true в вашем GridView.

Например,

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostback)
    {
         myGrid.DataSource = new object[] {null};
         myGrid.DataBind();
    }
}    

protected void myGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.DataItem == null)
        {
             e.Row.Visible = false;
        }
    }
}
4
ответ дан 14 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: